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
字段。
请看这个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
字段。