Java の深いコピー、浅いコピー、およびクローン
Java でオブジェクトを操作する場合、コピー セマンティクスのニュアンスを理解することが重要です。深いコピー、浅いコピー、およびクローンは、オブジェクトの複製に対するさまざまなアプローチを説明するためによく使用される用語です。
浅いコピー
浅いコピーは、オブジェクトの最も外側のレベルを複製します。 。新しいオブジェクトには個別のフィールドがありますが、それらのフィールド内に保持されている参照はすべて元のオブジェクトと共有されます。
例:
<code class="java">Example eg1 = new Example(1, new int[]{1, 2}); Example eg2 = new Example(eg1.foo, eg1.bar);</code>
この浅いコピーでは、eg2新しい foo と、eg1 と同じ bar 配列への参照があります。
ディープ コピー
ディープ コピーはオブジェクトの複数のレベルを横断し、ネストされたすべての新しいコピーを作成しますオブジェクト。新しいオブジェクトは、元のオブジェクトから完全に独立しています。
例:
<code class="java">Example eg1 = new Example(1, new int[]{1, 2}); Example eg2 = new Example(eg1.foo, Arrays.copy(eg1.bar));</code>
このディープ コピーでは、eg2 には新しい foo と新しい配列 bar があります。
Clone
clone メソッドは、すべてのオブジェクトと配列に存在し、コピーを作成することを目的としています。ただし、その動作は標準化されていません。
- 浅いコピーまたは深いコピーを返す場合があります。
- 常に新しいオブジェクトを作成するとは限りません。
- そうでない場合もありますオブジェクトの同等性を保証します。
結論
オブジェクト間の完全な独立性が必要な場合は、ディープ コピーをお勧めします。浅いコピーは、オブジェクト参照で十分な場合に適しています。 clone メソッドの動作には一貫性がないため、注意して使用する必要があります。
以上が深いコピーと浅いコピーとクローン: どの Java コピー メカニズムを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Springboot Multi-Node環境での時限タスクの繰り返しの実行を避ける方法は?春に...

オブジェクト指向プログラミングでプロパティと状態を深く議論します。オブジェクト指向のプログラミングでは、プロパティと状態の概念はしばしば混乱しており、それらの間に微妙なものがあります...

Intellijを使用しているときにIDEAのOracleデータベースに接続するときのデジタルオーバーフローエラーに対処する方法...

MyBatisフレームワークを研究するとき、開発者はしばしば注釈に関するさまざまな問題に遭遇します。よくある質問の1つは、@resulttypeアノテーションを正しく使用する方法です...

自然言語処理技術を使用して人事データを最新の企業に照会する方法は、人事データの管理とQueryが一般的な要件です。私たちが...

Springboot Projectのデータベースアクセスパフォーマンスの問題マルチデータソース構成この記事は、Springboot ProjectでMulti-Dataソース構成にAtomikosを使用することを目指しています...

Javaプロジェクトを実行可能なJARファイルにパッケージ化すると、noclassdeffounderrorの問題に遭遇します。多くのJava開発者は...

プログラミングの世界でのIntellijideaのクラッキングの分析方法に関して、Intellij ...


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール
