Cloneable
修理できないほど壊れていることはよく知られています (詳細については、この質問の説明を参照してください)。
代替案と「どうすれば正しく行うか」に関する最後の質問は、数年前のものです。
- Clone を Java で実装する代わりの方法はありますか?
- clone メソッドを適切にオーバーライドするには?
- Clone() vs Copy コンストラクター - Java で推奨されている
- clone() 対コピーコンストラクター対ファクトリーメソッド?
- Java でのポリモーフィック コピー
- Object.clone の代わりにコピー コンストラクターを使用してディープ コピーする適切な方法
そこで、次のように再質問します。
現代(2014年)の代替品はCloneable
何ですか?
汎用ソリューションを探しています。次の要件を想像できました。
Copyable
クラスが実装するある種のインターフェース:A extends Copyable
.- ディープコピー。
A
のインスタンスが のインスタンスを参照する場合、B
新しいa.copy()
を参照する必要がありますb.copy()
。 - 指定されたターゲットにコピーします:
a.copyTo(a1)
。 - ポリモーフィック コピー:
B
extendsのA
場合、 froma.copyTo(b)
のすべてのプロパティをto にコピーする必要があります。B
a
b
もちろん、これらすべてを自分で実装することはできますが、これには標準インターフェースを用意するのが合理的ではないでしょうか? または、何か不足していますか?
私のコンテキストの背景のビット。私は JAXB とスキーマ派生クラスをよく使用しています。多くの場合、これらのクラスをディープ コピーすると非常に便利です。数年前、私はいくつかの JAXB スキーマ コンパイラ プラグインを作成しcopyTo
て、上記の要件 (およびそれ以上) を実装するメソッドを生成しました。独自のランタイム API を使用する必要がありました。今、私はケースを再検討していて、標準的な解決策があるかどうかを尋ねることにしました.