Joshua Bloch 在 Effective Java 中解释的枚举类型

Enum Types as explained in Effective Java by Joshua Bloch

请看这个link。关于枚举,布洛赫先生说

Java’s enum types are classes that export one instance for each enumeration constant via a public static final field.

我阅读了 Enum Class 文档 但是 没有 public static final 字段 ,那么如何以上说法是否成立。请解释。 谢谢

枚举是所有枚举的基础class。它不包含常量。包含常量的是具体的枚举 classes 本身。例如参见 [​​=10=]。它确实包含每个枚举常量的 public static final 字段:DISPLAY 和 FORMAT。

创建一个Test.java文件并写入Test enum:

public enum Test {
    Hello
}

编译此 class: javac Test.java,并使用 javap Test 得到编译后的 class:

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 class 从 Enum 延伸出来,它有 public static final Hello 字段。