Java Object klone ()

Metoden Java Object clone () lager en grunne kopi av objektet.

Her betyr den grunne kopien at den oppretter et nytt objekt og kopierer alle feltene og metodene som er knyttet til objektet.

Syntaksen til clone()metoden er:

 object.clone()

clone () Parametere

Den clone()metoden ikke tar noen parametere.

clone () Returverdier

  • returnerer kopien av objektet
  • kaster CloneNotSupportedExceptionhvis objektets klasse ikke implementerer Cloneablegrensesnittet

Merk : ObjectKlassen implementeres ikke Cloneable. Derfor kan vi ikke kalle clone()metoden for Objectklassens objekt .

Eksempel 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 eksemplet ovenfor har vi opprettet en klasse som heter Main. Klassen inneholder to feltnavn og versjon. Her har vi initialisert klassefeltene ved hjelp av objektet obj1 til klassen.

Legg merke til linjen,

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

Her har vi brukt clone()metoden til å lage kopi av obj1. Verdien som returneres av clone()tildeles objektet obj2. Siden returverdien av clone()er Objecttype, har vi brukt (Main)til å konvertere den til Hovedtype.

Nå kan du få tilgang til feltnavnet og versjonen ved hjelp av objektet obj2. Men hvis vi endrer verdien av feltene ved hjelp av obj2, vil ikke verdien assosiert med obj1 ikke bli endret.

Eksempel 2: Endring av verdi ved bruk av klonet 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); ) ) )

Legg merke til linjen,

 obj2.name = "Python";

Her har vi endret verdien på variabelen ved hjelp av obj2. Nå når vi skriver ut variabelnavnet for både obj1 og obj2, kan vi se at verdien for obj1 ikke er endret. Det er fordi clone()metoden lager den grunne kopien av gjenstandene.

Hvis du vil lære mer om grunne kopier, kan du gå til Hva er grunne kopier i Java?

Vi har vedlagt clone()metoden inne i Java prøve … fangstblokk. Det er fordi underklasse kan kaste unntaket hvis objektet ikke kan klones.

Merk : ObjectKlassen er superklassen for alle klassene i Java. Derfor kan hver klasse og matrise implementere clone()metoden.

Interessante artikler...