Non so se sono l'unico a saperlo, ma i valori di un enum non sono implicitamente definitivi e possono essere modificati.Usi e possibilità di mutevolezza delle enumerazioni Java?
enum EnumTest {
TOTO("TOTO 1"),
TATA("TATA 2"),
;
private String str;
private EnumTest(String str) {
this.str = str;
}
@Override
public String toString() {
return str;
}
}
public static void main(String[] args) {
System.out.println(EnumTest.TATA);
EnumTest.TATA.str = "newVal";
System.out.println(EnumTest.TATA);
}
TATA 2
newVal
Questi valori sono oftenly inizializzati creazione dell'istanza (TOTO("TOTO 1")
), ma, tranne me, non ho mai visto nessuno usando la parola finale per le variabili enum che dovrebbero essere immutabili. Non è questo il punto della domanda, mi chiedo solo se sono l'unica a saperlo.
Quello che mi piacerebbe sapere è se ci fosse qualche usecase per creare enfasi mutabili?
E mi piacerebbe anche conoscere i limiti di ciò che possiamo fare con le enumerazioni (buone pratiche o meno). Non l'ho provato, ma forse un enum può essere iniettato con i fagioli Spring? Almeno sembra che possiamo annotare ogni istanza (@Deprecated funziona bene per esempio), e anche i metodi.
L'utilizzo di 'final' per i campi è una pratica comune nelle enumerazioni. –