如果我有一个具有clone()方法的代码但是我知道重复的代码在这里很糟糕(在那个应用程序例如bank应用程序中),我该怎么办? clone()方法在bankOfAmerica中实现IAccount(IAccount有clone()方法头!)一个人已经覆盖了bankOfAmerica类中的clone()方法,我不想在这里制作重复的代码。应该怎么做我使用clone()方法。
clone()方法:
public IAccount clone() throws CloneNotSupportedException {
return (BankOfIranSavingsAccount) super.clone();
}
答案 0 :(得分:1)
返回'super.clone()',因为克隆的实现几乎可以保证是错误的。如果你看一下clone的javadoc,你会发现期望是如果b是a的克隆,那么下面通常应该是真的
a != b;
a.getClass() == b.getClass();
a.equals(b);
虽然这些并不是硬性规则,克隆的意义实际上依赖于实现类,但如果你的实现没有,那么你应该有一个很好的理由,最好有详细记录。达到这些期望。通常,任何调用super.clone()来创建其返回值的clone方法都将无法通过第二次测试。