Javaでは、オブジェクトのArrayList
(または任意のコレクション)をラップするクラスがあるとします。将来の変更を非表示にするJavaの戻りコピー
これらのオブジェクトの1つを返すと、呼び出し元はArrayListで作成されたオブジェクトの今後の変更が表示されません。
つまり、オブジェクトのディープコピーを返すが、クローン可能かどうかはわかりません。
Javaでは、オブジェクトのArrayList
(または任意のコレクション)をラップするクラスがあるとします。将来の変更を非表示にするJavaの戻りコピー
これらのオブジェクトの1つを返すと、呼び出し元はArrayListで作成されたオブジェクトの今後の変更が表示されません。
つまり、オブジェクトのディープコピーを返すが、クローン可能かどうかはわかりません。
スペックにそのターン:
- つまりオブジェクトがコレクション に入ることを許可するために、インタフェースを実装する必要がArrayList<ICloneable>()
ような何かそれから常に深いコピーを行うことが保証されます。インターフェイスには、深いコピーを返すメソッドが必要です。
私はあなたができる最高だと思います。
1つのオプションは、シリアル化を使用することです。ここではそれを説明するブログ記事です:
http://weblogs.java.net/blog/emcmanus/archive/2007/04/cloning_java_ob.html
私はそれがovbious答えであると仮定します
複製可能であることをコレクションに保存されているクラスのための要件を確認します。挿入時または検索時に、それが意味を成すものを確認して例外をスローすることができます。
また、アイテムが複製可能でない場合は、参照渡しオプションにフェールバックするだけです。