我想让我的班级成员成为不可变的。(甚至是对象成员的成员)。
public class Bar {
private String data;
public Bar(String data){
this.data = data;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
}
和
public class Foo {
private Bar bar;
public Foo(Bar bar){
this.bar = bar;
}
public Bar getBar() {
return bar;
}
}
主要用于测试
public static void main(String[] args){
Bar bar = new Bar("initial data");
Foo foo = new Foo(bar);
System.out.println(foo.getBar().getData()); // "initial data"
foo.getBar().setData("changed data");
System.out.println(foo.getBar().getData()); // "changed data"
}
在此示例中,foo的bar是只读对象字段。但是使用getter方法,我可以访问该引用然后更改数据。
最后foo的栏被改变了。 我可以阻止这样的改变吗?
CNC中 不可变类没有可变类成员吗?