それを知っているのが私だけかどうかはわかりませんが、列挙型の値は暗黙的に最終的なものではなく、変更できます。
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
これらの値は多くの場合、インスタンスの作成時に初期化されます ( TOTO("TOTO 1")
) が、私を除いて、不変であるべき enum 変数に final キーワードを使用している人を見たことがありません。それは質問のポイントではありません。これを知っているのは私だけかどうか疑問に思っています。
私が知りたいのは、変更可能な列挙型を作成するユースケースがあったかどうかです。
また、列挙型でできることの限界も知りたいです (良い習慣かどうか)。私はそれをテストしていませんが、enum に Spring Bean を注入できるのでしょうか? 少なくとも、各インスタンス (たとえば @Deprecated は問題なく機能します) とメソッドに注釈を付けることができるようです。