Java-objectkloon ()

De Java Object clone () - methode maakt een ondiepe kopie van het object.

Hier betekent de ondiepe kopie dat er een nieuw object wordt gemaakt en alle velden en methoden die aan het object zijn gekoppeld, worden gekopieerd.

De syntaxis van de clone()methode is:

 object.clone()

clone () Parameters

De clone()methode heeft geen parameters.

clone () Retourwaarden

  • geeft de kopie van het object terug
  • gooit CloneNotSupportedExceptionals de klasse van het object de Cloneableinterface niet implementeert

Opmerking : de Objectklasse implementeert niet Cloneable. Daarom kunnen we de clone()methode niet aanroepen voor het object van de Objectklasse.

Voorbeeld 1: Java-kloon ()

 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); ) ) )

In het bovenstaande voorbeeld hebben we een klasse gemaakt met de naam Main. De klasse bevat twee velden: naam en versie. Hier hebben we de klassevelden geïnitialiseerd met behulp van het object obj1 van de klasse.

Let op de lijn,

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

Hier hebben we de clone()methode gebruikt om een ​​kopie van obj1 te maken. De waarde die wordt geretourneerd door clone()wordt toegewezen aan het object obj2. Sinds de terugkeer waarde van clone()is Objecthet type, hebben we gebruikt (Main)om te zetten in Main type.

Nu zijn de velden naam en versie toegankelijk met behulp van het object obj2. Als we echter de waarde van de velden wijzigen met obj2, wordt de waarde die is gekoppeld aan obj1 niet gewijzigd.

Voorbeeld 2: waarde wijzigen met gekloond object

 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); ) ) )

Let op de lijn,

 obj2.name = "Python";

Hier hebben we de waarde van de variabele gewijzigd met obj2. Als we nu de variabelenaam voor zowel obj1 als obj2 afdrukken, kunnen we zien dat de waarde voor obj1 niet is gewijzigd. Het is omdat de clone()methode de oppervlakkige kopie van de objecten maakt.

Voor meer informatie over ondiep kopiëren gaat u naar Wat is ondiep kopiëren in Java?

We hebben de clone()methode ingesloten in het Java try … catch-blok. Het is omdat de subklasse de uitzondering kan genereren als het object niet kan worden gekloond.

Opmerking : de Objectklasse is de superklasse voor alle klassen in Java. Daarom kan elke klasse en arrays de clone()methode implementeren .

Interessante artikelen...