如何获取自定义类对象的java.lang.Type对象



我想使用Java Generics特性来实现一个通用的功能。但我不知道如何获得自定义类对象的java.lang.reflect.Type对象。以下是我的情况,我想从给定的类名中获得一个类型,并将其传递给ProcessedResult<T>以取代T:

String className = getClassName();
Class clazz = Class.forName(className);
Type type = null;
ProcessedResult<T> result = new ProcessedResult<T>();

我尝试使用ProductModel.class.getGenericSuperclass(),但作为它的名字,它只返回它的超类的类型。

有谁能帮我一下吗?谢谢。

不能指定运行时确定的类型作为泛型类型的编译时替代。

类型T实际上只在编译时强制执行,因为类型擦除。因此,当您在运行时拥有实际类型时,任何信息或检查都已经完成并消失了。

您的ProcessedResult将不得不与Class<T>Type对象一起工作,而不是做任何有用的工作。

java.lang.reflect.Typenot泛型接口。

如果你想使用Type

你可以使用instance.getClass()ClassName.class,因为它返回Class<?>Class实现Type接口。所以应该行得通。

您必须使用ProcessedResult<Type>ProcessedResult<Class<?>>

相关内容

  • 没有找到相关文章

最新更新