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