Java objekti kloon ()

Java Object clone () meetod loob objektist madala koopia.

Siin tähendab madal koopia, et see loob uue objekti ja kopeerib kõik objektiga seotud väljad ja meetodid.

Meetodi süntaks clone()on:

 object.clone()

kloon () parameetrid

clone()Meetod ei võta parameetrid.

kloon () tagastavad väärtused

  • tagastab objekti koopia
  • viskab, CloneNotSupportedExceptionkui objekti klass ei kasuta Cloneableliidest

Märkus . ObjectKlass ei rakendu Cloneable. Seega ei saa me klassi clone()objekti meetodit kutsuda Object.

Näide 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); ) ) )

Ülaltoodud näites oleme loonud klassi nimega Main. Klass sisaldab kahte välja nime ja versiooni. Siin oleme lähtestanud klassi väljad, kasutades klassi objekti obj1.

Pange tähele joont,

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

Siin oleme clone()meetodi obj1 koopia loomiseks kasutanud. Tagastatud väärtus clone()määratakse objektile obj2. Kuna tagastusväärtus clone()on Objecttype, oleme (Main)selle teisendanud põhitüübiks.

Nüüd pääseb väljade nimele ja versioonile juurde objekti obj2 abil. Kuid kui muudame väljade väärtust obj2 abil, siis objektiga 1 seotud väärtust ei muudeta.

Näide 2: Väärtuse muutmine kloonitud objekti abil

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

Pange tähele joont,

 obj2.name = "Python";

Siin oleme muutnud obj2 abil muutuja väärtust. Nüüd, kui printime muutuja nime nii obj1 kui ka obj2 jaoks, näeme, et obj1 väärtus pole muutunud. Sellepärast, et clone()meetod teeb objektidest madala koopia.

Madalas koopias lisateabe saamiseks külastage jaotist Mis on madal kopeerimine Java-s?

Oleme clone()meetodi lisanud Java try … catch blocki. Sellepärast, et alaklass võib erandi teha, kui objekti ei saa kloonida.

Märkus . ObjectKlass on kõigi Java klasside superklass. Seega saavad clone()meetodit rakendada kõik klassid ja massiivid .

Huvitavad Artiklid...