私はそれを知る唯一の人かどうか分かりませんが、enumの値は暗黙的に最終的なものではなく、変更することができます。Java enumsの可用性の可能性と可能性?
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
これらの値は、oftenly自分自身を除いて、私は不変でなければなりません列挙型変数のための最終的なキーワードを使用して誰も見たことがない、インスタンス作成(TOTO("TOTO 1")
)で初期化されますが、。それは質問のポイントではなく、ただ私がこれを知っている唯一の人かどうか疑問に思っています。
変更可能な列挙型を作成するためのユースケースがあれば教えてください。
また、私たちが列挙型でできることの限界を知りたい(良い練習かどうか)。 私はそれをテストしていませんが、おそらくenumにSpring Beanを注入することができますか? 少なくとも、各インスタンスに注釈を付けることができます(例:@Deprecated works is fine)。
フィールドに 'final'を使うのは列挙型でよく使われます。 –