【发布时间】:2015-07-14 19:06:02
【问题描述】:
请看这个link。关于枚举,Bloch 先生说
Java 的枚举类型是为每个类型导出一个实例的类 通过公共静态最终字段枚举常量。
我阅读了枚举类文档但是没有没有公共静态最终字段,那么上面的说法如何成立。请解释。 谢谢
【问题讨论】:
-
编译器为您创建公共静态最终字段。尝试使用 javap 反编译类。
标签: java enums effective-java
请看这个link。关于枚举,Bloch 先生说
Java 的枚举类型是为每个类型导出一个实例的类 通过公共静态最终字段枚举常量。
我阅读了枚举类文档但是没有没有公共静态最终字段,那么上面的说法如何成立。请解释。 谢谢
【问题讨论】:
标签: java enums effective-java
枚举是所有枚举的基类。它不包含常量。包含常量的是具体的枚举类本身。参见例如documentation for the enum Locale.Category。它确实包含每个枚举常量的公共静态最终字段:DISPLAY 和 FORMAT。
【讨论】:
创建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 字段。
【讨论】: