Java Object-klon ()

Metoden Java Object clone () skapar en grunt kopia av objektet.

Här betyder den grunda kopian att den skapar ett nytt objekt och kopierar alla fält och metoder som är associerade med objektet.

Syntaxen för clone()metoden är:

 object.clone()

clone () Parametrar

Den clone()metoden tar inte några parametrar.

clone () Returvärden

  • returnerar kopian av objektet
  • kastar CloneNotSupportedExceptionom objektets klass inte implementerar Cloneablegränssnittet

Obs : ObjectKlassen implementeras inte Cloneable. Därför kan vi inte anropa clone()metoden för Objectklassens objekt .

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

I ovanstående exempel har vi skapat en klass som heter Main. Klassen innehåller två fält namn och version. Här har vi initialiserat klassfältet med objektets objekt1 för klassen.

Lägg märke till raden,

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

Här har vi använt clone()metoden för att skapa en kopia av obj1. Värdet som returneras clone()tilldelas objektet obj2. Eftersom returvärdet för clone()är Objecttyp har vi använt det för (Main)att konvertera det till huvudtyp.

Nu kan du komma åt fälternamnet och versionen med objektet obj2. Men om vi ändrar värdet på fälten med obj2 ändras inte värdet associerat med obj1.

Exempel 2: Ändra värde med hjälp av klonade objekt

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

Lägg märke till raden,

 obj2.name = "Python";

Här har vi ändrat värdet på variabeln med hjälp av obj2. Nu när vi skriver ut variabelnamnet för både obj1 och obj2 kan vi se att värdet för obj1 inte har ändrats. Det beror på att clone()metoden gör den grunda kopian av objekten.

För att lära dig mer om grunt kopia, besök Vad är grunt kopia i Java?

Vi har bifogat clone()metoden inuti Java try … catch block. Det beror på att underklass kan kasta undantaget om objektet inte kan klonas.

Obs : Den Objectklassen är super för alla klasser i Java. Därför kan varje klass och arrays implementera clone()metoden.

Intressanta artiklar...