enum枚举关键字:与class、interface平级
enum 枚举名{
列举常量元素
}
一开始疑惑列举的元素既然是常量,为什么不可以是字符串等等,例如

然后修正代码尝试运行,再反编译后看看:

运行后对枚举Week反编译解析:javap -p Week.class

反编译后,发现enum Week本质上是class Week extends Enum
可以将关键字enum视为对Enum类的封装,因此所有关键字enum声明的枚举都是对枚举类Enum的继承类。
而枚举中的元素本质上都是static final修饰的类引用,即其对象常量,所以使用时需用类名来调用。
API文档中关于枚举Enum类的释义:

我尝试直接定义一个Week类继承Enum:

似乎是java不允许这样使用枚举,所以才有了关键字enum,这个原因暂不了解
因为无法直接继承Enum类,所以利用关键字enum封装后,只需定义枚举声明,列举常量引用元素,编译器会自动调用构造函数初始化常量,就可以类名直接调用
本文详细解析了Java中枚举(enum)的关键特性,包括其如何作为关键字封装Enum类,自动实现对枚举元素的静态最终引用,以及为何不能直接继承Enum类。通过代码示例和反编译分析,揭示了枚举的本质及其在Java中的独特作用。
2069

被折叠的 条评论
为什么被折叠?



