Ho un enumerato come quello qui sotto, ma eclissi dice che ci sono errori nella prima definizione di ogni coppia opposta.Java enum - Impossibile fare riferimento a un campo prima che sia definito
public enum Baz{
yin(yang), //Cannot reference a field before it is defined
yang(yin),
good(evil), //Cannot reference a field before it is defined
evil(good);
public final Baz opposite;
Baz(Baz opposite){
this.opposite = opposite;
}
}
Quello che voglio realizzare è di essere in grado di utilizzare Baz.something.opposite
per ottenere l'oggetto opposta di Baz.something
. C'è una soluzione possibile per questo? Forse un segnaposto vuoto per yang
e bad
prima di yin
e good
sono definiti in questo esempio?
+1 Hai ragione, non è possibile farlo funzionare con gli oggetti reali a causa 'evil' ha vinto' essere definito fino a quando 'good' è già inizializzato, ma cambiarli non funziona perché allora' good' non è definito quando 'evil' è inizializzato. Buona idea usare i nomi :) – Brian
Sostituire i valori enum digitati con stringhe non tipizzate non è una buona soluzione. L'intero punto delle enumerazioni è di dare sicurezza di tipo alle costanti, e le stringhe non ti danno questo. Inoltre, c'è una soluzione molto migliore - facendo questo in un blocco di inizializzazione statico, come @meriton sottolinea nella sua risposta. –