2015-05-05 27 views
5

請參閱link。關於枚舉,布洛赫說有效Java中解釋的枚舉類型由Joshua Bloch

Java的枚舉類型是通過公共靜態最終場導出每個 枚舉常量一個實例類。

我讀了枚舉類文檔但有沒有公共靜態最終場,那麼如何做上述表示的成立。請解釋。 謝謝

+2

編譯器爲您創建公共靜態最終字段。嘗試使用javap反編譯該類。 –

回答

13

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

3

枚舉是所有枚舉的基類。它不包含常量。包含常量的是具體的枚舉類本身。例如參見documentation for the enum Locale.Category。它包含每個枚舉常量的公共靜態最終字段:DISPLAY和FORMAT。