-3

clone()メソッドを持つコードがあるが、ここで重複コードが悪いことを知っている場合(そのアプリケーション、egbankアプリケーション)、どうすればよいですか?clone()メソッドはIAccountを実装するbankOfAmericaにあります(IAccountにはclone()メソッドヘッダーがあります!)1人がbankOfAmericaクラスのclone()メソッドをオーバーライドしているので、ここで重複コードを作成したくありません。私はそのclone()メソッドを使用します。

clone()メソッド:

public IAccount clone() throws CloneNotSupportedException {
      return (BankOfIranSavingsAccount) super.clone();
} 
4

1 に答える 1

1

clone の実装として 'super.clone()' を返すことは、ほぼ確実に間違っています。cloneの javadoc を見ると、 b が a のクローンである場合、通常は次のようになることが期待されることがわかります。

a != b;
a.getClass() == b.getClass();
a.equals(b);

これらは厳密な規則ではなく、クローンの意味は実装するクラスに大きく依存しますが、実装がこれらの期待に合わない場合は、十分に文書化された、十分な理由が必要です。また、一般に、super.clone() を呼び出して戻り値を作成する clone メソッドは、2 番目のテストに失敗します。

于 2009-07-02T23:39:02.630 に答える