Heim  >  Artikel  >  Java  >  Deep Copy vs. Shallow Copy vs. Clone: ​​Welchen Java-Kopiermechanismus sollten Sie verwenden?

Deep Copy vs. Shallow Copy vs. Clone: ​​Welchen Java-Kopiermechanismus sollten Sie verwenden?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-30 06:44:28234Durchsuche

 Deep Copy vs. Shallow Copy vs. Clone: Which Java Copy Mechanism Should You Use?

Deep Copy, Shallow Copy und Clone in Java

Beim Bearbeiten von Objekten in Java ist das Verständnis der Nuancen der Kopiersemantik von entscheidender Bedeutung. Tiefe Kopie, flache Kopie und Klonen sind häufig verwendete Begriffe, um verschiedene Ansätze zur Objektduplizierung zu beschreiben.

Flache Kopie

Eine flache Kopie dupliziert die äußerste Ebene eines Objekts . Das neue Objekt hat separate Felder, aber alle in diesen Feldern enthaltenen Referenzen werden mit dem ursprünglichen Objekt geteilt.

Beispiel:

<code class="java">Example eg1 = new Example(1, new int[]{1, 2});
Example eg2 = new Example(eg1.foo, eg1.bar);</code>

In dieser flachen Kopie, zB2 hat ein neues foo und einen Verweis auf das gleiche bar-Array wie eg1.

Deep Copy

Eine Deep Copy durchläuft mehrere Ebenen eines Objekts und erstellt neue Kopien aller verschachtelten Objekte Objekte. Das neue Objekt ist völlig unabhängig vom Original.

Beispiel:

<code class="java">Example eg1 = new Example(1, new int[]{1, 2});
Example eg2 = new Example(eg1.foo, Arrays.copy(eg1.bar));</code>

In dieser tiefen Kopie hat eg2 ein neues foo und eine neue Array-Leiste, die ist eine Kopie von der in eg1.

Clone

Die Clone-Methode, die für alle Objekte und Arrays existiert, soll eine Kopie erstellen. Sein Verhalten ist jedoch nicht standardisiert:

  • Es kann eine flache oder tiefe Kopie zurückgeben.
  • Es wird möglicherweise nicht immer ein neues Objekt erstellt.
  • Möglicherweise nicht Objektgleichheit garantieren.

Fazit

Tiefenkopieren wird empfohlen, wenn vollständige Unabhängigkeit zwischen Objekten erforderlich ist. Flaches Kopieren ist geeignet, wenn Objektreferenzen ausreichend sind. Das Verhalten der Klonmethode ist inkonsistent und sollte mit Vorsicht verwendet werden.

Das obige ist der detaillierte Inhalt vonDeep Copy vs. Shallow Copy vs. Clone: ​​Welchen Java-Kopiermechanismus sollten Sie verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn