Java ist eine der am weitesten verbreiteten Programmiersprachen und verfügt über eine Vielzahl von Merkmalen und Funktionen. Ein Objekt in Java wird verwendet, um die Aufgabe zu erledigen; Sie erstellen Objekte, ändern, verschieben, rufen ihre jeweiligen Methoden auf usw. Wie wir alle wissen, werden Verweise auf die Objekte in Java gespeichert. Wenn wir also zwei Referenzen haben, die auf dasselbe Objekt verweisen, werden Änderungen bei einem Objekt vollständig in denselben Änderungen bei dem anderen Objekt widergespiegelt. Nun wirkt sich dieser Faktor möglicherweise nicht immer zu unseren Gunsten aus, daher ist das Klonen die Antwort, um solche Situationen zu verhindern. Mit anderen Worten: Das Erstellen einer exakten Kopie solcher Objekte wird in Java als Objektklonen bezeichnet.
Starten Sie Ihren kostenlosen Softwareentwicklungskurs
Webentwicklung, Programmiersprachen, Softwaretests und andere
Per Definition ist das Klonen von Objekten der Prozess der Erstellung einer exakten Kopie eines Originalobjekts mit einem ähnlichen Zustand. Beim Klonen werden alle Eigenschaften auf das neu geklonte Objekt übertragen, diese Eigenschaften können jedoch je nach Bedarf geändert oder manipuliert werden. Die clone()-Methode muss in der Object-Klasse definiert werden. Die Implementierung der klonbaren Schnittstelle java.lang.A ist für die Klasse, in der wir das Objekt klonen möchten, obligatorisch. Falls die Implementierung der klonbaren Schnittstelle fehlschlägt, wird eine Ausnahme ausgelöst. Werfen wir nun einen Blick auf die Syntax für das Klonen von Objekten.
Syntax:
protected Object clone() throws CloneNotSupportedException
Für die Klasse Object werden bestimmte Klonvorgänge von der Klonmethode ausgeführt. Diese Methode erstellt ein exaktes Duplikat der Klasse und initialisiert alle Felder mit dem Inhalt der Objektfelder. Wenn die Schnittstelle Cloneable nicht von der Klasse des genannten Objekts implementiert wird, wird eine „CloneNotSupportedException“ ausgelöst. Es wird davon ausgegangen, dass alle Arrays die klonbare Schnittstelle implementieren. Hier ist die Schnittstelle Cloneable nicht auf der Klasse Object implementiert. Wenn wir also die Klonmethode für ein Objekt aufrufen, wird ein Laufzeitfehler ausgegeben.
Lassen Sie uns nun die Funktionsweise der clone()-Methode anhand einer Demonstration verstehen.
Code:
class obj_clone implements Cloneable{ int phone_code; String f_name; obj_clone(int phone_code,String f_name){ this.phone_code=phone_code; this.f_name=f_name; } public Object clone()throws CloneNotSupportedException{ return super.clone(); } public static void main(String args[]){ try{ obj_clone s1=new obj_clone(99,"sulaksh"); obj_clone s2=(obj_clone)s1.clone(); System.out.println(s1.phone_code+" "+s1.f_name); System.out.println(s2.phone_code+" "+s2.f_name); }catch(CloneNotSupportedException c){} } }
Code-Erklärung: Wie Sie sehen können, haben wir unsere Klasse initialisiert und klonbar implementiert. Hier wird überprüft, ob die tatsächliche Klasse das Klonbare implementiert, mit clone() im Objekt und dann mit der Erstellung einer Kopie fortgefahren. Dann haben wir unsere beiden Variablen „Telefonnummer“ mit dem Datentyp „Integer“ und „Vorname“ mit dem Datentyp „String“. Anschließend haben wir einen Konstruktor unserer Klasse obj_clone zusammen mit den Variablen mit dem Schlüsselwort .this erstellt. Wie Sie sehen können, haben wir unser Objekt mit der Methode clone() und der Ausnahme CloneNotSupportedException, die wir zuvor besprochen haben. Darüber hinaus wird super.clone() hier möglicherweise den Fehler CloneNotSupportedException auslösen, den wir später abgefangen haben.
Dann haben wir unsere Hauptklasse und wir haben für alles darin einen Try-Catch verwendet. Anschließend haben wir ein Objekt unserer Klasse als s1 und s2 erstellt. Wir haben beide Parameter für s1, unser erstes Objekt, übergeben und dann die clone()-Methode implementiert, um s1 in s2 zu klonen. Schließlich haben wir zwei Ausgabedruckanweisungen. Außerhalb des Try-Blocks haben wir unseren Catch-Block mit der zuvor besprochenen Ausnahme. In der 8ten Zeile des Beispiels haben wir clone() wie im Syntaxteil erwähnt und erläutert implementiert. Bei der Ausführung gibt das obige Programm die Ausgabe als „99sulaksh 99sulaksh“ aus. Die Ausgabe finden Sie im unten angehängten Screenshot.
Ausgabe:
Da wir nun verstanden haben, was das Klonen von Objekten ist und wie es durchgeführt wird, wollen wir nun verstehen, welche Arten des Klonens Java unterstützt.
Lassen Sie uns nun die Vor- und Nachteile des Objektklonens verstehen.
Da alles oder jede Methode ihre eigenen Einschränkungen und Funktionen hat, sind im Folgenden die Vorteile des Klonens aufgeführt.
Wie bereits erwähnt, hat jede Methode ihre Einschränkungen und Funktionen. Lassen Sie uns nun die Nachteile von Clone() verstehen.
Mit dem richtigen Verständnis der Vor- und Nachteile von clone() oder einer anderen Methode kann die Implementierung solch wunderbarer Methoden und Funktionen für den Programmierer von großem Nutzen sein.
Wir haben verstanden, was clone() ist, welche Funktionalität und welche Verwendung es hat. Unterschied zwischen tiefem und flachem Klonen sowie Lazy Cloning. Flaches Klonen kopiert nur die Felder, während tiefes Klonen die Felder und Werte kopiert und je nach Bedarf implementiert werden kann. Während Lazy Copy eine Kombination aus beidem ist. Wir haben auch die Vor- und Nachteile von Klonen verstanden ().
Das obige ist der detaillierte Inhalt vonObjektklonen in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!