Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Joshua Bloch在有效Java中解释的枚举类型_Java_Enums_Effective Java - Fatal编程技术网

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

Joshua Bloch在有效Java中解释的枚举类型,java,enums,effective-java,Java,Enums,Effective Java,请看这个。关于Enum,布洛赫说 Java的枚举类型是为每个类导出一个实例的类 通过公共静态最终字段的枚举常量 我阅读了枚举类文档,但是没有公共静态最终字段,那么上面的陈述如何成立呢。请解释一下。 谢谢Enum是所有Enum的基类。它不包含常量。包含常量的是具体的枚举类本身。请参见示例。它确实包含每个枚举常量的公共静态最终字段:显示和格式。创建一个Test.java文件并写入Test enum: public enum Test { Hello } 编译这个类:javac Test.j

请看这个。关于Enum,布洛赫说

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

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

Enum是所有Enum的基类。它不包含常量。包含常量的是具体的枚举类本身。请参见示例。它确实包含每个枚举常量的公共静态最终字段:显示和格式。

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

编译器为您创建public static final字段。尝试用javap反编译类。