Java 为什么所有枚举都要扩展枚举<;e>;

Java 为什么所有枚举都要扩展枚举<;e>;,java,enums,Java,Enums,使用未定义的类型参数扩展泛型类型不是不可能的吗 class Foo extends enum<E> 类Foo扩展枚举 他们如何扩展它 编辑:另外,values()方法在哪里定义 提前感谢使用未定义的类型参数扩展泛型类型确实是非法的。但是,枚举不会这样做。如果您在反编译一些java代码时看到一个(并且您的枚举类型未命名为E),则反编译器无法正确处理泛型 枚举隐式扩展enum。也就是说,编译器隐式地生成一个类YourEnumType extensed Enum。通过传递自己的类型,它

使用未定义的类型参数扩展泛型类型不是不可能的吗

class Foo extends enum<E>
类Foo扩展枚举
他们如何扩展它

编辑:另外,values()方法在哪里定义


提前感谢

使用未定义的类型参数扩展泛型类型确实是非法的。但是,枚举不会这样做。如果您在反编译一些java代码时看到一个
(并且您的枚举类型未命名为
E
),则反编译器无法正确处理泛型


枚举隐式扩展
enum
。也就是说,编译器隐式地生成一个
类YourEnumType extensed Enum
。通过传递自己的类型,它允许
Enum
compareTo
valueOf
函数拒绝来自不同类型
Enum
s的值。

使用未定义的类型参数扩展泛型类型确实是非法的。但是,枚举不会这样做。如果您在反编译一些java代码时看到一个
(并且您的枚举类型未命名为
E
),则反编译器无法正确处理泛型


枚举隐式扩展
enum
。也就是说,编译器隐式地生成一个
类YourEnumType extensed Enum
。通过传递自己的类型,它允许
Enum
compareTo
valueOf
函数拒绝来自不同类型的
Enum
s的值。

您从何处获取值
Foo
应该扩展
Enum
。当它使用Enum类型创建Enum时,是否隐式定义了e?以下是java.lang.Enum的源代码,如果有帮助:@Thilo:将您的注释作为答案。课堂上的文档说明了原因。你是从哪里得到这些信息的
Foo
应该扩展
Enum
。当它使用Enum类型创建Enum时,是否隐式定义了e?以下是java.lang.Enum的源代码,如果有帮助:@Thilo:将您的注释作为答案。类中的文档说明了原因。如果不是在enum generic中,那么values()方法在哪里定义?@rubixibuc-编程中什么不是人工的?这是语法上的甜点,没有什么你不能在枚举中自己写的。但是,让编译器来做这件事更方便you@rubixibuc-那取决于你说话的方式。或者换句话说,在不知道>>你的意思的情况下,我的意思是它不是在任何类中预定义的,而是由编译器返回什么。作为参考,隐式声明在中指定。如果不是在enum泛型中定义,那么values()方法在哪里定义?@rubixibuc-在编程中什么不是人工的?这是语法上的甜点,没有什么你不能在枚举中自己写的。但是,让编译器来做这件事更方便you@rubixibuc-那取决于你说话的方式。或者换一种说法,在不知道>>You的情况下,我的意思是它不是在任何类中预定义的,而是由编译器返回什么。作为参考,隐式声明在中指定。