小编典典

获取通用类

java

我的课开始于

public abstract class LastActionHero<H extends Hero>(){

现在,我想在代码中的某处编写代码,H.class但这是不可能的(就像String.class还是Integer.class现在)。

您能告诉我如何获得Class通用药吗?


阅读 221

收藏
2020-10-25

共1个答案

小编典典

您可以动态提供类型,但是编译器不会自动为您提供该类型。

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在这种情况下,超类的通用参数就是这样。

2020-10-25