Enum类型,如Joshua Bloch在Effective Java中所述
请看这个链接 。 关于Enums,布洛赫先生说
Java的枚举类型是通过公共静态最终字段为每个枚举常量导出一个实例的类。
我阅读了Enum类文档,但没有公共静态final字段 ,那么上述语句如何成立。 请解释。 谢谢
创建一个Test.java
文件并编写Test enum
:
public enum Test { Hello }
编译这个类: javac Test.java
,并使用javap Test
来获取编译的类:
public final class Test extends java.lang.Enum{ public static final Test Hello; public static Test[] values(); public static Test valueOf(java.lang.String); static {}; }
你可以看到Test
类从Enum
扩展而且它有public static final Hello
字段。
Enum是所有枚举的基类。 它不包含常量。 包含常量的是具体的枚举类本身。 例如,请参阅枚举Locale.Category的文档 。 它确实包含每个枚举常量的公共静态最终字段:DISPLAY和FORMAT。