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:
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!