我试图根据另一个创建新的对象。
public Case(Case datCase){
this.lstColors = (ArrayList<LineColor>) datCase.lstColors.clone();
this.lstCases = (ArrayList<Case>) datCase.lstCases.clone();
//this = (Case) datCase.clone();
}
当然我在我使用的每个对象上使用克隆方法(不在像LineColor这样的内部对象中)但是,似乎没有克隆(当原始更改时对象仍然会改变)
我是这样的新手所以请帮助
答案 0 :(得分:0)
ArrayList上的所有克隆都是ArrayList与第一个不同,但它仍然包含相同的对象。您必须迭代所有对象并在第二个ArrayList中创建新对象,以使它们不同。
以下是How to clone ArrayList and also clone its contents?。
的示例public static List<Dog> cloneList(List<Dog> dogList) {
List<Dog> clonedList = new ArrayList<Dog>(dogList.size());
for (Dog dog : dogList) {
clonedList.add(new Dog(dog));
}
return clonedList;
}
此示例实际上使用复制构造函数而不是克隆。