logo

Objektkloning i Java

konstruktør i javaDe kloning av objekter er en måte å lage nøyaktig kopi av et objekt. Clone()-metoden til Object-klassen brukes til å klone et objekt.

De java.lang.Klonbart grensesnitt må implementeres av klassen hvis objektklone vi ønsker å lage. Hvis vi ikke implementerer Cloneable-grensesnitt, genererer clone()-metoden CloneNotSupportedException .

De clone()-metoden er definert i klassen Objekt. Syntaksen for klone()-metoden er som følger:

 protected Object clone() throws CloneNotSupportedException 

Hvorfor bruke clone()-metoden?

De clone() metode lagrer den ekstra behandlingsoppgaven for å lage den nøyaktige kopien av et objekt. Hvis vi utfører det ved å bruke det nye nøkkelordet, vil det ta mye behandlingstid å bli utført, det er derfor vi bruker objektkloning.

sortering i arraylist i java

Fordel med objektkloning

Selv om Object.clone() har noen designproblemer, er det fortsatt en populær og enkel måte å kopiere objekter på. Følgende er en liste over fordeler ved å bruke klone()-metoden:

  • Du trenger ikke å skrive lange og repeterende koder. Bare bruk en abstrakt klasse med en 4- eller 5-linjers lang klone()-metode.
  • Det er den enkleste og mest effektive måten å kopiere objekter på, spesielt hvis vi bruker det på et allerede utviklet eller et gammelt prosjekt. Bare definer en overordnet klasse, implementer Cloneable i den, oppgi definisjonen av clone()-metoden og oppgaven vil bli utført.
  • Clone() er den raskeste måten å kopiere array på.

Ulempen med objektkloning

Følgende er en liste over noen ulemper med klone()-metoden:

  • For å bruke Object.clone()-metoden, må vi endre mange syntakser i koden vår, som å implementere et Cloneable-grensesnitt, definere clone()-metoden og håndtere CloneNotSupportedException, og til slutt kalle Object.clone() osv.
  • Vi må implementere klonbart grensesnitt mens det ikke har noen metoder i det. Vi må bare bruke den til å fortelle JVM at vi kan utføre clone() på objektet vårt.
  • Object.clone() er beskyttet, så vi må gi vår egen klone() og indirekte kalle Object.clone() fra den.
  • Object.clone() påkaller ikke noen konstruktør, så vi har ingen kontroll over objektkonstruksjonen.
  • Hvis du vil skrive en klonemetode i en barneklasse, bør alle superklassene definere klone()-metoden i dem eller arve den fra en annen overordnet klasse. Ellers vil super.clone()-kjeden mislykkes.
  • Object.clone() støtter bare grunn kopiering, men vi må overstyre den hvis vi trenger dyp kloning.

Eksempel på clone()-metode (Objektkloning)

La oss se det enkle eksemplet på objektkloning

 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){} } } 
Test det nå
 Output:101 amit 101 amit 
last ned eksemplet på objektkloning

Som du kan se i eksemplet ovenfor, har begge referansevariablene samme verdi. Dermed kopierer clone() verdiene til et objekt til et annet. Så vi trenger ikke å skrive eksplisitt kode for å kopiere verdien av et objekt til et annet.

nummen logg

Hvis vi lager et annet objekt med nytt nøkkelord og tilordner verdiene til et annet objekt til dette, vil det kreve mye prosessering på dette objektet. Så for å lagre den ekstra behandlingsoppgaven bruker vi clone()-metoden.