Enum类型,如Joshua Bloch在Effective Java中所述

时间:2015-05-05 07:09:21

标签: java enums effective-java

请参阅此link。关于Enums,布洛赫先生说。

  

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

我阅读了 Enum类文档但是没有公共静态最终字段,那么上述语句如何成立。请解释。 感谢

2 个答案:

答案 0 :(得分:14)

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

答案 1 :(得分:4)

Enum是所有枚举的基类。它不包含常量。包含常量的是具体的枚举类本身。例如,参见documentation for the enum Locale.Category。它确实包含每个枚举常量的公共静态最终字段:DISPLAY和FORMAT。