Java の深いコピー、浅いコピー、クローン
Java では、「深いコピー」、「浅いコピー」、および「 「クローン」は頻繁に使用されますが、定義が不十分な用語です。それぞれの概念を正しく理解するには、明確にする必要があります。
値のコピーとオブジェクトのコピー
コピーの種類について説明する前に、値のコピーを区別することが重要です。 > と をコピーしていますオブジェクト:
オブジェクトの浅いコピーと深いコピー
次の例を考えてみましょう。
<code class="java">class Example { int foo; int[] bar; ... } Example eg1 = new Example(1, new int[]{1, 2}); Example eg2 = ...</code>
eg1 の浅いコピーは次のようになります。
<code class="java">Example eg2 = new Example(eg1.foo, eg1.bar);</code>
eg1 のディープ コピーは次のようになります。
<code class="java">Example eg2 = new Example(eg1.foo, Arrays.copy(eg1.bar));</code>
クローン
シャロー コピーやディープ コピーとは異なり、クローンはこのメソッドはすべての Java クラスと配列で使用できます。ただし、次の点に注意することが重要です。
したがって、クローンを使用すると、
結論
これらの用語は Java で頻繁に使用されますが、その定義は大きく異なる場合があります。オブジェクトを正確に複製するには、浅いコピー、深いコピー、クローンのニュアンスを理解することが重要です。クローンの制限を念頭に置き、慎重に取り組むことも重要です。
以上がJava のディープ コピー、シャロー コピー、クローン: 違いは何ですか? それぞれをいつ使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。