您将需要手动实施A.clone()
,以便它只克隆要克隆的对象。的Object.clone
默认的实现是执行一个浅拷贝操作,所以你需要做这样的事情:
public class A implements Cloneable {
[...]
public Object clone() {
Object obj = null;
try {
obj = super.clone();
// super.clone performs a "shallow copy" operation.
// Now you will need to manually clone any objects for
// which a "deep copy" operation is desired, e.g.
//
// obj.memberX = memberX.clone();
// obj.memberY = memberY.clone();
// ...
//
} catch (CloneNotSupportedException ex) {
// Should not happen..
}
return obj;
}
}
这是假设你知道你想克隆出哪些对象(即哪些对象在那里建设的过程中产生)。