获取通用类
问题内容:
我的课开始于
public abstract class LastActionHero<H extends Hero>(){
现在,我想在代码中的某处编写代码,H.class
但这是不可能的(就像String.class
还是Integer.class
现在)。
您能告诉我如何获得Class
通用药吗?
问题答案:
您可以动态提供类型,但是编译器不会自动为您提供该类型。
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具有带有MuscleHero的Generic参数的超类。
public class Arnie<H extend Hero> extends LastActionHero<H> { }
H
在这种情况下,超类的通用参数就是这样。