2016-07-24 16 views
-3

Im Allgemeinen eine Kopie des Objekts zu machen, weisen wir sie auf ein neues Objekt wie:java die Daten von einem Objekt zum anderen in Kopieren

Object a = new Object(); 
Object b = a; 

Während dies zu tun, was alle Dinge, die wir darauf achten müssen von? Ich nehme an, Objekt a und b sind voneinander abhängig, da sie auf den gleichen Ort zeigen, so dass sich der Wert in einem anderen auch ändern wird. Bitte korrigieren Sie, wenn es falsch ist.

Auch ist dieser Weg unterscheidet sich vom Klonen oder wir können es nur als Klonen betrachten.

Wenn es Klonen, wird dies das tiefe Klonen oder flach tun?

+0

Falsch schon. Diese Zuweisung erstellt keine Kopie eines Objekts. Es erstellt einen weiteren Verweis auf das * selbe * Objekt. – EJP

Antwort

0

Es wird überhaupt nicht geklont. Es gibt nur dem gleichen Objekt einen anderen Namen, da a und b auf genau dasselbe Objekt zeigen.

1

Die erste Anweisung hat einen Zeiger erstellt, der auf neu erstellte Objekte im Speicher zeigt. Die zweite Anweisung setzt den Variablenpunkt auf denselben Ort. das bedeutet, beide Zeiger zeigen auf dasselbe Objekt im Speicher. Und ja, Sie können den Status des Objekts von jedem Zeiger ändern. Zeiger sind genau wie Adressen in der Erinnerung.

Klonen ist eine andere Sache. Im Grunde erstellen Sie die gesamte Kopie des Objekts an einem anderen Ort und zeigen mit einer Variablen auf das Objekt. also

Objekt a = neues Objekt(); Objekt b = a.clone();

Jetzt zeigt b auf ein neues Objekt im Speicher. Anfangs sind beide Objekte identisch, aber vollständig getrennt. Das Ändern von Objekt a hat keine Auswirkung auf Objekt b.

Shahzad

0

Beide Referenzen verweisen auf das gleiche Objekt.

Die Out-of-Box-Implementierung der Object.clone() - Methode führt eine flache Kopie durch. Wenn ein Objekt eine Assoziation im Inneren hat, lässt es ein Mitarbeiterobjekt mit einem Adressobjekt sagen, wenn wir das Mitarbeiterobjekt nur klonen, werden seine primitiven Eigenschaften kopiert, wenn wir Object.clone() verwenden. Sowohl die ursprüngliche als auch die geklonte Kopie zeigen auf dasselbe Adressobjekt.

Eine Möglichkeit, tief Klonen zu erreichen, ist Benutzer Serialisierung. Zuerst serialisieren Sie das Objekt und deserialisieren es anschließend. Java erstellt beim Deserialisieren alle neuen Objekte.

0

Es wird nicht geklont .. Objekt a = neues Objekt(); Objekt b = a ;. Das bedeutet, dass das Objekt "a" und "b" auf denselben Speicherort zeigen. Wenn wir ein Objekt klonen. Der Status eines anderen Objekts wird im neuen Objekt gespeichert, nicht jedoch im Speicherort.

Verwandte Themen