可能重复:
通过反射在java中获取泛型参数的类型
如何获取泛型的类
我怎样才能获得通用参数的类。
public <T extends BeanProxiable> void method(){
Class claz = T.class
}
这是错的。为什么?如何解决这个问题呢?
可能重复:
通过反射在java中获取泛型参数的类型
如何获取泛型的类
我怎样才能获得通用参数的类。
public <T extends BeanProxiable> void method(){
Class claz = T.class
}
这是错的。为什么?如何解决这个问题呢?
你不能。
T 的类型仅在编译时才知道。
一旦程序开始运行,T 的类型将是 Object。
这就是泛型在 Java 中的工作方式。
您可以动态提供类型,但编译器不会自动为您执行此操作。
public abstract class LastActionHero<H extends Hero>(){
protected final Class<H> hClass;
protected LastActionHero(Class<H> hClass) {
this.hClass = hClass;
}
// use hClass how you like.
}
顺便说一句:动态获取它并非不可能,但这取决于它的使用方式。例如
public class Arnie extends LastActionHero<MuscleHero> { }
可以确定 Arnie.class 有一个超类,其 Generic 参数为 MuscleHero。
public class Arnie<H extend Hero> extends LastActionHero<H> { }
在这种情况下,超类的通用参数将只是 H。