logo

Objektum klónozás Java nyelven

konstruktor java-banA objektum klónozás egy módja annak, hogy egy objektumról pontos másolatot készítsünk. Az Object osztály clone() metódusa egy objektum klónozására szolgál.

A java.lang.Klónozható felület annak az osztálynak kell megvalósítania, amelynek objektumklónját szeretnénk létrehozni. Ha nem valósítjuk meg a klónozható felületet, a clone() metódus generál CloneNotSupportedException .

java részstring tartalmazza

A clone() metódus az Object osztályban van definiálva. A clone() metódus szintaxisa a következő:

 protected Object clone() throws CloneNotSupportedException 

Miért használja a clone() metódust?

A clone() metódus elmenti az extra feldolgozási feladatot egy objektum pontos másolatának létrehozásához. Ha az új kulcsszó használatával hajtjuk végre, akkor sok feldolgozási időt vesz igénybe, ezért objektum klónozást használunk.

java localdatetime

Az objektum klónozás előnyei

Bár az Object.clone()-nak vannak tervezési problémái, mégis népszerű és egyszerű módja az objektumok másolásának. Az alábbiakban felsoroljuk a clone() metódus használatának előnyeit:

  • Nem kell hosszadalmas és ismétlődő kódokat írnia. Csak használjon egy absztrakt osztályt egy 4 vagy 5 soros hosszú clone() metódussal.
  • Ez a legegyszerűbb és leghatékonyabb módja az objektumok másolásának, különösen, ha már kidolgozott vagy régi projektre alkalmazzuk. Csak definiáljon egy szülőosztályt, implementálja benne a Cloneable-t, adja meg a clone() metódus definícióját, és a feladat kész.
  • A Clone() a leggyorsabb módja a tömb másolásának.

Az objektum klónozás hátránya

Az alábbiakban felsoroljuk a clone() módszer néhány hátrányát:

  • Az Object.clone() metódus használatához számos szintaxist meg kell változtatnunk a kódunkban, mint például a klónozható felület megvalósítása, a clone() metódus meghatározása és a CloneNotSupportedException kezelése, végül az Object.clone() meghívása stb.
  • Klónozható felületet kell megvalósítanunk, miközben nincs benne metódus. Csak azt kell használnunk, hogy elmondjuk a JVM-nek, hogy végrehajthatjuk a clone()-t az objektumunkon.
  • Az Object.clone() védett, ezért meg kell adnunk a saját klónunkat, és indirekt módon meghívnunk kell az Object.clone()-t.
  • Az Object.clone() nem hív meg egyetlen konstruktort sem, így nincs befolyásunk az objektum felépítésére.
  • Ha klónozási metódust akarunk írni egy gyermekosztályba, akkor annak minden szuperosztályának meg kell határoznia a clone() metódust, vagy örökölnie kell egy másik szülőosztálytól. Ellenkező esetben a super.clone() lánc meghibásodik.
  • Az Object.clone() csak sekély másolást támogat, de ezt felül kell bírálnunk, ha mély klónozásra van szükségünk.

Példa a klón() módszerre (objektum klónozás)

Lássuk az objektum klónozás egyszerű példáját

konstruktorok java-ban
 class Student18 implements Cloneable{ int rollno; String name; Student18(int rollno,String name){ this.rollno=rollno; this.name=name; } public Object clone()throws CloneNotSupportedException{ return super.clone(); } public static void main(String args[]){ try{ Student18 s1=new Student18(101,'amit'); Student18 s2=(Student18)s1.clone(); System.out.println(s1.rollno+' '+s1.name); System.out.println(s2.rollno+' '+s2.name); }catch(CloneNotSupportedException c){} } } 
Tesztelje most
 Output:101 amit 101 amit 
töltse le az objektum klónozás példáját

Amint az a fenti példában látható, mindkét referenciaváltozónak ugyanaz az értéke. Így a clone() átmásolja egy objektum értékeit egy másikba. Tehát nem kell explicit kódot írnunk ahhoz, hogy egy objektum értékét egy másikba másoljuk.

Ha új kulcsszóval hozunk létre egy másik objektumot, és ehhez egy másik objektum értékeit rendeljük hozzá, akkor ez sok feldolgozást igényel ezen az objektumon. Tehát az extra feldolgozási feladat mentéséhez a clone() metódust használjuk.