2015-05-05 45 views
5

Si prega di vedere questo link. Per quanto riguarda enumerazioni, signor Bloch diceTipi di enum come spiegato in Java efficace da Joshua Bloch

tipi enum di Java sono classi che esportano una sola istanza per ogni costante enumerazione attraverso un campo finale public static.

Ho letto la documentazione Enum Classe ma non c'era alcun campo finale public static, allora come fa la dichiarazione di cui sopra sono vere. Spiega per favore. Grazie

+2

Il compilatore crea il campo finale statico pubblico per te. Prova a decompilare la classe con javap. –

risposta

13

Creare un file Test.java e scrivere Test enum:

public enum Test { 
    Hello 
} 

compilazione questa classe: javac Test.java, e utilizzare javap Test per ottenere la classe compilata:

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 {}; 
} 

e si può vedere la classe Test si estende da Enum e ha il campo public static final Hello.

3

Enum è la classe base per tutte le enumerazioni. Non contiene costanti. Ciò che contiene costanti sono le enumerazioni concrete stesse. Vedi ad esempio lo documentation for the enum Locale.Category. Contiene i campi finali statici pubblici per ogni costante enum: DISPLAY e FORMAT.