我正在编写一个不可变的类。其中一个实例是另一个可变的类的对象。如何防止修改该实例的状态。
答案 0 :(得分:5)
如果您为所有getter提供代理,但不为该字段本身提供getter。例如:
public final class Foo {
private Bar bar;
public String getBarField1() {
return bar.getBarField1();
}
public String getBarField2() {
return bar.getBarField2();
}
}
但是有一件事要考虑 - 这个领域是如何创造的。如果它是在构造函数中传递的,那么你必须创建它的副本而不是获取传递的对象,否则创建代码将引用Bar
实例并能够修改它。
答案 1 :(得分:3)
getVarNameProperty1()
,getVarNameProperty2()
);