我有两个类:父类 A 和一些子类 B,它扩展了 A 并且比 A 多了几个字段。我希望能够克隆这两个类,所以我已经覆盖了类中的clone()
方法Object
。
由于 B 类基本上是具有一些额外字段的 A 类,因此我想在clone()
B 类的实现中使用 A 类的克隆。我尝试了以下内容:
public class A
{
public Object clone()
{
A cloneA = new A();
cloneA.foo = this.foo;
cloneA.bar = this.bar;
return cloneA;
}
}
public class B extends B
{
public Object clone()
{
Object cloneA = super.clone();
B cloneB = (B)cloneA;
cloneB.fieldSpecificForB = this.fieldSpecificForB;
return cloneB;
}
}
这样我就不必clone()
在 B 的clone()
方法中复制 A 方法中的所有克隆逻辑。不幸的是,这不起作用,因为Java不允许将A类的对象强制转换为B类的对象。我四处寻找有关如何执行此操作的答案,但似乎没有办法重用克隆逻辑A.这是否意味着每次在A中添加另一个字段时,我都必须手动将这个字段的复制添加到所有clone()
子类的方法中。这似乎很容易出错......