我有一个 Calle
类,它有一个 String nombre;
和一个 int addr;
。但是,我创建的 clone
方法给出了错误的值。
public class Calle{
String nombre;
int addr;
public Object clone(){
return this;
}
}
Calle c1 = new Calle("a",1);
Calle c2 = c1.clone();
c2.setAddr(3);
System.out.println(c1.addr); // value wrong
为什么值不对?
最佳答案
您的克隆方法是错误的,因为它并没有真正克隆任何东西,它只是返回相同的对象。 clone
应该始终是具有与原始值相同的新 对象。
在这种情况下,看起来您已经有了一个复制构造函数,所以只需使用它来创建新的 Calle
并返回它。
public Object clone(){
return new Calle(this.nombre, this.addr);
}
关于java - 寻找正确的克隆方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16806300/