Per usare un esempio forzato in Java, ecco il codice:In Java, quando viene richiamato il costruttore per una costante enumerata?
enum Commands{
Save("S");
File("F");
private String shortCut;
private Commands(String shortCut){ this.shortCut = shortCut; }
public String getShortCut(){ return shortCut; }
}
Ho il seguente test/codice del driver:
public static void main(String args[]){
System.out.println(Commands.Save.getShortCut());
}
La domanda è: In Java, quando è il costruttore per una costante enumerata invocata? Nell'esempio sopra, sto solo usando la costante enumerata Save
. Significa che il costruttore è chiamato una volta solo per creare Save
? O sia Save
sia File
essere costruiti insieme indipendentemente?
Significa che quando 'ClassLoader' carica la classe, viene richiamato Constructor of enum? o l'accesso al membro come Salva e File invocherà il costruttore? Cosa succede se non esiste un costruttore di argomenti? –
@MuhammadBabar Una classe può essere caricata senza essere inizializzata. Quindi, no, significa che quando la classe è inizializzata, ogni membro è costruito. E, come ho detto, non importa se un membro è referenziato; viene costruito quando la classe è inizializzata. La tua seconda domanda non è chiara. Se non vengono forniti argomenti per il membro, deve essere definito un costruttore no-arg o l'enum non verrà compilato. È questo che vuoi dire? – erickson
Ma in enum non facciamo mai new SomeEnum() i.e nessuna inizializzazione esplicita! Nel mio caso enum ha solo una variabile i.e * instance * e un costruttore privato senza argomenti. Quando viene chiamato questo costruttore? –