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



请参阅此链接。关于枚举,布洛赫先生说

Java的枚举类型是导出每个实例的类 通过公共静态最终字段的枚举常数。

我读了枚举类文档,但是没有没有公共静态最终字段,那么上述语句如何保持true。请解释。谢谢

创建一个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字段。

枚举是所有枚举的基类。它不包含常数。包含常数的是具体枚举课程本身。例如,请参见枚举Locale.Stagory的文档。它确实包含每个枚举常数的公共静态最终字段:显示和格式。

最新更新