プライベート参照型のいわゆる「防御コピー」を返す必要があります。これは、プライベート フィールドの参照を返さないようにするためです。
プライベート列挙型に必要かどうかを知りたいです。列挙型は不変の参照型であることをどこかで読んだので、答えは「いいえ」でなければなりません。そうですか?
プライベート参照型のいわゆる「防御コピー」を返す必要があります。これは、プライベート フィールドの参照を返さないようにするためです。
プライベート列挙型に必要かどうかを知りたいです。列挙型は不変の参照型であることをどこかで読んだので、答えは「いいえ」でなければなりません。そうですか?
列挙型は本質的に不変ではありませんが、利用可能なインスタンスの固定セットしかないため、とにかく防御コピーを作成することはできません。新しいインスタンス。
いずれにせよ、列挙型は一般的に不変であるべきですが、本質的に不変であるという主張を打ち消すために:
enum BadEnum {
INSTANCE;
private int foo;
private int getFoo() {
return foo;
}
public int setFoo(int foo) {
this.foo = foo;
}
}
class Test {
public static void main(String[] args) {
BadEnum.INSTANCE.setFoo(10);
System.out.println(BadEnum.INSTANCE.getFoo()); // Prints 10
}
}
要するに: