0

我正在尝试构建一种方法来深度复制一个类:

public MyClass clne() {
    MyClass cpy = new MyClass();
    cpy.var1 = getVar1(); //getVar1 is a method returning the value of var1
    cpy.var2 = getVar2();
    return cpy;
}

但是,当我运行时:

MyClass x = new MyClass();
x.var1 = 18;
MyClass y = x.clne();
y.myMethod(); // Where myMethod is a method changing the value of var1 to, say 4.
System.out.println(x.var1);

x.var1 的值为 4。

难道我做错了什么?谢谢 :)

4

1 回答 1

0

您应该创建 var1 的新实例,而不是指向旧引用,除非它们当然是原语。

cpy.var1 = new Var1( getVar1() );

这将要求您为 Var1 类编写一个复制构造函数。不过,这可以通过其他方式完成。

希望有帮助。

PS,你基本上是在做一个浅拷贝。

于 2013-03-22T00:02:39.837 回答