Java Object clone ()

Die Java Object clone () -Methode erstellt eine flache Kopie des Objekts.

Hier bedeutet die flache Kopie, dass ein neues Objekt erstellt und alle mit dem Objekt verknüpften Felder und Methoden kopiert werden.

Die Syntax der clone()Methode lautet:

 object.clone()

clone () Parameter

Die clone()Methode akzeptiert keine Parameter.

clone () Rückgabewerte

  • Gibt die Kopie des Objekts zurück
  • wird ausgelöst, CloneNotSupportedExceptionwenn die Klasse des Objekts die CloneableSchnittstelle nicht implementiert

Hinweis : Die ObjectKlasse wird nicht implementiert Cloneable. Daher können wir die clone()Methode für das Objekt der ObjectKlasse nicht aufrufen .

Beispiel 1: Java-Klon ()

 class Main implements Cloneable ( // declare variables String name; int version; public static void main(String() args) ( // create an object of Main class Main obj1 = new Main(); // initialize name and version using obj1 obj1.name = "Java"; obj1.version = 14; // print variable System.out.println(obj1.name); // Java System.out.println(obj1.version); // 14 try ( // create clone of obj1 Main obj2 = (Main)obj1.clone(); // print the variables using obj2 System.out.println(obj2.name); // Java System.out.println(obj2.version); // 14 ) catch (Exception e) ( System.out.println(e); ) ) )

Im obigen Beispiel haben wir eine Klasse mit dem Namen Main erstellt. Die Klasse enthält zwei Felder, Name und Version. Hier haben wir die Klassenfelder mit dem Objekt obj1 der Klasse initialisiert.

Beachten Sie die Linie,

 Main obj2 = (Main)obj1.clone();

Hier haben wir die clone()Methode verwendet, um eine Kopie von obj1 zu erstellen. Der von zurückgegebene Wert clone()wird dem Objekt obj2 zugewiesen. Da der Rückgabewert clone()ist ObjectTyp haben wir verwenden (Main)es in der Main - Typen zu konvertieren.

Jetzt kann mit dem Objekt obj2 auf den Feldnamen und die Version zugegriffen werden. Wenn wir jedoch den Wert der Felder mit obj2 ändern, wird der mit obj1 verknüpfte Wert nicht geändert.

Beispiel 2: Ändern des Werts mithilfe eines geklonten Objekts

 class Main implements Cloneable ( // declare variables String name; int version; public static void main(String() args) ( // create an object of Main class Main obj1 = new Main(); // initialize name and version using obj1 obj1.name = "Java"; obj1.version = 14; // print variable System.out.println(obj1.name); // Java System.out.println(obj1.version); // 14 try ( // create a clone of obj1 Main obj2 = (Main)obj1.clone(); // print the variables using obj2 System.out.println(obj2.name); // Java System.out.println(obj2.version); // 14 // changing value of name // using obj2 obj2.name = "Python"; System.out.println(obj2.name); // Python // check if value associated // with obj1 is changed System.out.println(obj1.name); // Java ) catch (Exception e) ( System.out.println(e); ) ) )

Beachten Sie die Linie,

 obj2.name = "Python";

Hier haben wir den Wert der Variablen mit obj2 geändert. Wenn wir nun den Variablennamen für obj1 und obj2 drucken, können wir sehen, dass sich der Wert für obj1 nicht geändert hat. Dies liegt daran, dass die clone()Methode die flache Kopie der Objekte erstellt.

Weitere Informationen zu flachen Kopien finden Sie unter Was ist flache Kopien in Java?

Wir haben die clone()Methode in den Java try … catch-Block aufgenommen. Dies liegt daran, dass die Unterklasse die Ausnahme auslösen kann, wenn das Objekt nicht geklont werden kann.

Hinweis : Die ObjectKlasse ist die Oberklasse für alle Klassen in Java. Daher kann jede Klasse und jedes Array die clone()Methode implementieren .

Interessante Beiträge...