Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我试过这个:
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。为什么我的枚举与枚举不兼容?
为什么不只是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>to 转换时出现编译时错误Class<Enum>。
Class