创建克隆Custome对象

时间:2015-06-09 01:27:35

标签: java git

我试图根据另一个创建新的对象。

public Case(Case datCase){
        this.lstColors = (ArrayList<LineColor>) datCase.lstColors.clone();
        this.lstCases = (ArrayList<Case>) datCase.lstCases.clone();

        //this = (Case) datCase.clone();
    }

当然我在我使用的每个对象上使用克隆方法(不在像LineColor这样的内部对象中)但是,似乎没有克隆(当原始更改时对象仍然会改变)

我是这样的新手所以请帮助

PD:完整的项目在https://github.com/GunB/Mixing-Colours

1 个答案:

答案 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;
}

此示例实际上使用复制构造函数而不是克隆。