Java Object klón ()

A Java Object clone () metódus sekély másolatot hoz létre az objektumból.

Itt a sekély másolat azt jelenti, hogy új objektumot hoz létre, és az objektumhoz tartozó összes mezőt és metódust lemásolja.

A clone()módszer szintaxisa :

 object.clone()

clone () Paraméterek

A clone()módszer nem vesz fel paramétereket.

clone () Visszatérési értékek

  • az objektum másolatát adja vissza
  • dob, CloneNotSupportedExceptionha az objektum osztálya nem valósítja meg az Cloneableinterfészt

Megjegyzés : Az Objectosztály nem valósítja meg Cloneable. Ezért nem hívhatjuk clone()meg az Objectosztály objektumának metódusát .

1. példa: Java klón ()

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

A fenti példában létrehoztunk egy Main nevű osztályt. Az osztály két mező nevét és verzióját tartalmazza. Itt inicializáltuk az osztálymezőket az osztály obj1 objektumának felhasználásával.

Figyelje meg a sort,

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

Itt clone()az Obj1 másolatának létrehozására használtuk a módszert. A visszaadott érték clone()az objektum objektumhoz van rendelve. Mivel a visszatérési értéke clone()van Objecttípus, már használt (Main)alakításra Main típusát.

A mezők neve és verziója az obj2 objektummal érhető el. Ha azonban megváltoztatjuk a mezők értékét az obj2 használatával, akkor az obj1-hez társított érték nem változik.

2. példa: Érték megváltoztatása klónozott objektum használatával

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

Figyelje meg a sort,

 obj2.name = "Python";

Itt megváltoztattuk a változó értékét az obj2 segítségével. Most, amikor az obj1 és az obj2 változó nevét kinyomtatjuk, láthatjuk, hogy az obj1 értéke nem változott. A clone()módszer ugyanis az objektumok sekély másolatát készíti el.

Ha többet szeretne megtudni a sekély másolásról, keresse fel a Mi az a sekély másolás Java-ban?

A clone()módszert a Java try… catch blokkba csatoltuk. Az alosztály ugyanis kivetheti a kivételt, ha az objektum nem klónozható.

Megjegyzés : Az Objectosztály a Java összes osztályának szuperosztálya. Ezért minden osztály és tömb megvalósíthatja a clone()módszert.

érdekes cikkek...