将特定枚举分配给Java中的Class <enum>

时间:2018-04-11 10:24:31

标签: java reflection enums

我有一个枚举,我希望将该类转换为Class<Enum>而不进行反射。

例如,枚举是Numbers.java

public enum Numbers {
    ONE, TWO, THREE;
}

我能做的最好就是使用反射,如下所示

Class<Enum> enumClass = (Class<Enum>) Class.forName("com.package.inner.eveninner.Numbers");

有没有办法不使用反射呢?


Class<Enum> enumClass = (Class<Enum>) Numbers.class;

给出了编译错误:

incompatible types: Class<Numbers> cannot be converted into Class<Enum>

1 个答案:

答案 0 :(得分:2)

请尝试Class<? extends Enum<?>>

public enum Numbers {
    ONE, TWO, THREE;
}
public void test(String[] args) throws Exception {
    Class<? extends Enum<?>> enumClass = Numbers.class;
    System.out.println(enumClass);
}