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

Posted

技术标签:

【中文标题】Joshua Bloch 在 Effective Java 中解释的枚举类型【英文标题】:Enum Types as explained in Effective Java by Joshua Bloch 【发布时间】:2015-07-14 19:06:02 【问题描述】:

请看这个link。关于枚举,Bloch 先生说

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

我阅读了枚举类文档但是没有没有公共静态最终字段,那么上面的说法如何成立。请解释。 谢谢

【问题讨论】:

编译器为您创建公共静态最终字段。尝试使用 javap 反编译类。 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于Joshua Bloch 在 Effective Java 中解释的枚举类型的主要内容,如果未能解决你的问题,请参考以下文章

Effective Java 3

谁能解释一下 Joshua Bloch 第 41 条的例子? [复制]

有效的 Java 由 Joshua Bloch:Item1 - 静态工厂方法

如何在使用QuTiP绘制Bloch球体时给出aplot标题

html 测试Joshua Canfield投资组合

Parser Generator Tips翻译(中英对译) by Joshua Xu