次のクラスのインスタンス変数を final 化してイミュータブルにしようとしたのですが、そのデータを変更できるようです. 参照だけがイミュータブルですか?(つまり、Y の別のインスタンスをその変数に割り当てることはできませんか?)
public class StateModification {
private final Y immutable ;
public StateModification() {
super();
this.immutable = new Y(100);
}
public void setImmutableData(int x){
this.immutable.setYnum(x);
}
public int getImmutableData(){
return this.immutable.getYnum();
}
public static void main(String[] args) {
StateModification sm = new StateModification();
System.out.println("immutable="+sm.getImmutableData());
sm.setImmutableData(222);
System.out.println("immutable="+sm.getImmutableData());
}
}
class Y{
private int ynum;
public Y(int ynum) {
super();
this.ynum = ynum;
}
public int getYnum() {
return ynum;
}
public void setYnum(int ynum) {
this.ynum = ynum;
}
}
o/p
不変=100
不変=222