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封装后,只需定义枚举声明,列举常量引用元素,编译器会自动调用构造函数初始化常量,就可以类名直接调用