2

基本的なコレクション インターフェイス (List、Map、Set) はインターフェイスを拡張しませんCloneable。これは、具体的な実装にクローン可能性を強制しないために行われます。

すべてのコレクション クラスはCloneableインターフェイスを実装しているため、それらはすべて本質的に Cloneable です。また、オブジェクトをクローン可能にするためCloneableに、コンパイラ/JVMにカーテンの後ろで追加の作業を行うように通知することを意味するマーカーインターフェースです。

私の質問は次のとおりです。オブジェクトをクローン可能にしたくない状況は何ですか?

4

4 に答える 4

3

シングルトンは良いケースです。もう1つは、システム上の何かへの参照が1つだけあるべきものです。たとえば、ストリーム。複数のオブジェクトが同じ入力(または出力)ストリームを指すようにすると、あらゆる種類の問題が発生する可能性があります。

を使用する場合は、代わりにコピーコンストラクターclone()を作成することを検討してください。

于 2011-12-14T05:59:11.763 に答える
2

クラスが大量のデータを保持している場合、大量のデータの複数のコピーを保持するのをやめるためにクローンを作成したくない場合があります。

于 2011-12-14T05:56:36.080 に答える
1

クローン可能なスレッドは必要ありません:Xクローン可能なリソースクラスもセッションBeanもありません

于 2011-12-14T05:57:06.460 に答える
1

Singleton パターンを実装する場合、結果の Singleton を複製可能にしたくないでしょう。

于 2011-12-14T05:55:00.910 に答える