Вам нужно будет вручную реализовать 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;
}
}
Это предполагает, что вы знаете, какие объекты вы хотите клонировать (т.е. какие объекты были созданыво время строительства А).