Ich weiß nicht, ob ich der Einzige bin, der das weiß, aber die Werte eines Enums sind nicht implizit endgültig und können geändert werden.Java enums Wandelbarkeit Use Cases und Möglichkeiten?
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
Diese Werte werden oftenly bei Instanzerstellung initialisiert (TOTO("TOTO 1")
), aber außer mir, ich habe noch nie jemanden gesehen, das letzte Schlüsselwort für Enum-Variablen, die unveränderlich sein sollte. Das ist nicht der Punkt der Frage, ich frage mich nur, ob ich der Einzige bin, der sich dessen bewusst ist.
Was würde ich gerne wissen, wenn es einen Anwendungsfall gab, um veränderbare enums zu erstellen?
Und ich würde auch gerne die Grenzen dessen kennen, was wir mit enums machen können (gute Praxis oder nicht). Ich habe es nicht getestet, aber vielleicht kann ein Enum mit Spring Bohnen injiziert werden? Zumindest scheint es, dass wir jede Instanz (z. B. @Deprecated funktioniert gut) und auch die Methoden kommentieren können.
Die Verwendung von "final" für Felder ist in enums üblich. –