使用未定义的类型参数扩展泛型类型确实是非法的。但是,枚举不这样做。如果您正在反编译一些 java 代码并在<E>
那里看到一个(并且您的枚举类型未命名E
),那么您的反编译器没有正确处理泛型。
枚举隐式扩展Enum<YourEnumType>
。也就是说,编译器隐式生成一个class YourEnumType extends Enum<YourEnumType>
. 通过传递自己的类型,它允许Enum
'compareTo
和valueOf
函数拒绝来自不同类型enum
s 的值。