我的示例代码-
private final DataObj dataObj = getDataObjs();
private final DataObj dataObj1 = new DataObjImpl();
dataObj1 = dataObj; //I need the value of dataObj1 to be the same even if the value of dataObj is modified anywhere further down in a class.
我的问题是,如果正在修改对象
dataObj
的值,那么第二个对象dataObj1
的值也会被修改,但是我需要第二个对象dataObj1
是不可变的(值应保持不变),是否存在做到这一点的方法? 最佳答案
通过使用赋值语句dataObj1 = dataObj;
,dataObj1
引用与dataObj
完全相同的对象。解决方案是分配dataObj
引用的对象的副本。一种方法是通过复制构造函数,例如:
dataObj1 = new DataObjImpl(dataObj);
下面是一个示例:
class DataObjImpl {
private Object data;
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
// copy constructor
public DataObjImpl(DataObjImpl obj) {
this.data = obj.data;
}
}