Java objektu klons ()

Java Object clone () metode izveido seklu objekta kopiju.

Šeit sekla kopija nozīmē, ka tā izveido jaunu objektu un kopē visus ar objektu saistītos laukus un metodes.

Metodes sintakse clone()ir šāda:

 object.clone()

clone () parametri

clone()Metode neveic nekādus parametrus.

clone () Return Vērtības

  • atgriež objekta kopiju
  • met, CloneNotSupportedExceptionja objekta klase neievieš Cloneablesaskarni

Piezīme . ObjectKlase netiek ieviesta Cloneable. Tādējādi mēs nevaram izsaukt klases clone()objekta metodi Object.

1. piemērs: Java klons ()

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

Iepriekš minētajā piemērā mēs esam izveidojuši klasi ar nosaukumu Main. Nodarbībā ietilpst divu lauku nosaukums un versija. Šeit mēs esam inicializējuši klases laukus, izmantojot klases objektu obj1.

Ievērojiet līniju,

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

Šeit mēs izmantojām clone()metodi obj1 kopijas izveidošanai. Atgrieztā vērtība clone()tiek piešķirta objektam obj2. Tā kā atgriešanās vērtība clone()ir Objecttips, mēs esam (Main)to pārveidojuši par galveno tipu.

Tagad lauku nosaukumam un versijai var piekļūt, izmantojot objektu obj2. Tomēr, ja mēs mainīsim lauku vērtību, izmantojot obj2, ar obj1 saistītā vērtība netiks mainīta.

2. piemērs: Vērtības maiņa, izmantojot klonētu objektu

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

Ievērojiet līniju,

 obj2.name = "Python";

Šeit mēs esam mainījuši mainīgā vērtību, izmantojot obj2. Tagad, kad izdrukājam mainīgā nosaukumu gan obj1, gan obj2, mēs varam redzēt, ka obj1 vērtība nav mainījusies. Tas ir tāpēc, ka šī clone()metode padara objektu seklu kopiju.

Lai uzzinātu vairāk par seklu kopēšanu, apmeklējiet Kas ir seklā kopija Java?

Mēs esam pievienojuši clone()metodi Java try … catch blokā. Tas ir tāpēc, ka apakšklase var radīt izņēmumu, ja objektu nevar klonēt.

Piezīme : ObjectKlase ir superklase visām Java klasēm. Tādējādi clone()metodi var ieviest katra klase un masīvi .

Interesanti raksti...