Si prega di guardare questo link. Nel suo libro Effective Java, Joshua Bloch diceUn enum può avere costruttori per ciascuna delle sue costanti
Si noti che le costanti Operazione vengono inserite nella mappa stringToEnum da un blocco statico che viene eseguito dopo la creazione delle costanti.
Cercando di fare ogni put costante sé nella mappa da proprio costruttore potrebbe causare un errore di compilazione
. Questa è una buona cosa, perché causerebbe una NullPointerException se fosse legale.
costruttori Enum non sono autorizzati ad accedere ai campi statici della del enum, eccezione a tempo di compilazione campi costanti.
Questa restrizione è necessaria perché questi campi statici non sono ancora stati inizializzati quando i costruttori corrono.
Ho due domande
- enumerazioni possono avere costruttori separati per ogni costante?
- Perché i campi della costante di tempo di compilazione sono accessibili nei costruttori ma non nei campi statici?
Grazie
si può aggiungere codice di esempio per coloro che non possono accedervi dal tuo link? – Pshemo
@Pshemo, Sì Signore, questo collegamento contiene l'intero articolo 30 del libro di Joshua Bloch Effective Java https://ly2xxx.wordpress.com/page/5/?app-download=ios – Ankit
intendevo metterlo direttamente in questione. I link tendono a rompersi così quando accade la tua domanda sarà inutile per i futuri lettori. – Pshemo