标签: java
我试过了:
public static enum Types { A, B, C } Class<Enum> e = Types.class;
但是我收到了“不兼容的类型”错误:
found : java.lang.Class<id.Types> required: java.lang.Class<java.lang.Enum> Class<Enum> e = Types.class;
据我所知,所有枚举都是从Enum继承而来的。为什么我的枚举与Enum不兼容?
答案 0 :(得分:10)
为什么不只是Class<? extends Enum> e = Types.class;?
Class<? extends Enum> e = Types.class;
UPD:我会给你更多解释,为什么你的代码不起作用。
首先,表达式Types.class的类型为Class<Types>,而变量e为Class<Enum>。
Types.class
Class<Types>
e
Class<Enum>
根据JLS 5.5.1类型(即Class<Types>和Class<Enum>)可以说是不同的类型(JLS 4.5),并且它们的删除相同(仅Class ),所以在这种情况下,当您尝试从Class<Types>转换为Class<Enum>时,它是编译时错误。
Class