如何声明一个只能包含枚举类的变量?

时间:2013-07-19 13:17:15

标签: 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不兼容?

1 个答案:

答案 0 :(得分:10)

为什么不只是Class<? extends Enum> e = Types.class;

UPD:我会给你更多解释,为什么你的代码不起作用。

首先,表达式Types.class的类型为Class<Types>,而变量eClass<Enum>

根据JLS 5.5.1类型(即Class<Types>Class<Enum>)可以说是不同的类型(JLS 4.5),并且它们的删除相同(仅Class ),所以在这种情况下,当您尝试从Class<Types>转换为Class<Enum>时,它是编译时错误。