ArrayList
Javaで、オブジェクトの(または任意のコレクション)をラップするクラスがあるとします。
呼び出し元がArrayListで行われたオブジェクトへの将来の変更を確認できないように、これらのオブジェクトの1つをどのように返しますか?
つまり、オブジェクトのディープコピーを返したいが、それがクローン可能かどうかはわかりません。
それを仕様に変えてください: -その
オブジェクトは、コレクションに許可されるためにインターフェースを実装する必要があります。ArrayList<ICloneable>()
そうすれば、常にディープコピーを実行することが保証されます。インターフェイスには、ディープコピーを返すことが保証されているメソッドが必要です。
それがあなたにできる最善のことだと思います。
1つのオプションは、シリアル化を使用することです。これを説明するブログ投稿は次のとおりです。
http://weblogs.java.net/blog/emcmanus/archive/2007/04/cloning_java_ob.html
私はそれが明白な答えだと思います:
コレクションに保存されているクラスがクローン可能であるための要件を作成します。挿入時または取得時に、より意味のあることを確認して、例外をスローすることができます。
または、アイテムがクローン可能でない場合は、参照によるリターンオプションにフェールバックします。