Hva er kloning i Java og dets typer?



Denne artikkelen om kloning i Java vil gi deg detaljert innsikt i kloningsprosessen og de forskjellige typer kloning som støttes av Java.

Mens vi programmerer, kommer vi ofte over scenarier der vi trenger å bruke et komplett stykke kode. Omskriving av koden gjør programmet klumpete, samtidig som programmets effektivitet reduseres. Dermed gir Java oss en utmerket funksjon som redder fra denne belastende oppgaven. Dette er kjent som kloning i Java, og gjennom denne artikkelen vil jeg gi deg full innsikt i det.

Nedenfor er emnene jeg skal diskutere i denne artikkelen:





Kloning i Java

Objektkloning i Java er prosessen med å lage en nøyaktig kopi av det opprinnelige objektet. Det er med andre ord en måte å lage et nytt objekt på ved å kopiere alle dataene og attributtene fra det opprinnelige objektet. Dette er bare mulig ved å implementere clone () -metoden til java.lang.Objekt klasse. Klonmetoden oppretter en eksakt kopi av et objekt det har værtpåkalt i en felt-for-felt-tildelingsrekkefølge og vil returnere den nye objektreferansen . En ting du må huske, i Java, kan objektene som implementerer klongrensesnittet som er et markørgrensesnitt, bruke klonen ().

hva er forskjellen mellom jquery og javascript

Nå som du er klar over hva som er kloning i Java, kan vi se forskjellige fordeler ved å bruke denne funksjonen.



Fordeler med kloning i Java

Nedenfor har jeg listet opp noen av de mest spennende funksjonene ved bruk av kloning i Java.

  • Hjelper med å redusere kodelinjene.
  • Den mest effektive og effektive måten å kopiere pågjenstander.
  • Også anses klonen () for å være den raskeste metoden for å kopiere en matrise.

Merk: Selv om bruk av kloning kan føre til noen designproblemer, men hvis du bruker det på en skikkelig strategisk måte, kan det være til fordel for deg.

Typer kloning i Java

Kloning i Java kan grupperesi to kategorier:



  1. Grunne kloning
  2. Dyp kloning

La oss forstå hver av dem en etter en.

Grunne kloning

I Java, når kloningsprosessen gjøres ved å påkalle clone () -metoden, kalles den Shallow Cloning. Det er standard kloningsprosess i Java hvor en grunne kopi av det opprinnelige objektet vil bli opprettet med nøyaktig felt. Hvis det opprinnelige objektet har referanser til noen andre objekter som felt, vil bare referansene til det objektet bli klonet i stedet for å opprette nye objekter. Med andre ord, hvis du endrer verdien på de klonede objektene, vil den også gjenspeiles i originalen. Dermed er grunne kloning avhengig av det opprinnelige objektet.

grunne kopi - Kloning i Java - EdurekaNedenfor har jeg gitt eksemplet på det samme:

pakke edureka klasse EduCourse {Strengkurs1 Stringkurs2 Strengkurs3 offentlig EduCourse (String crs1, String crs2, String crs3) {this.course1 = crs1 this.course2 = crs2 this.course3 = crs3}} klasse EduLearner implementerer Cloneable {int eduId String EduCourse eduCourse public EduLearner (int eduId, String learnerName, EduCourse eduCourse) {this.eduId = eduId this.learnerName = learnerName this.eduCourse = eduCourse} // Standardversjon av klon () metode beskyttet Object clone () kaster super CloneNotSupp .clone ()}} offentlig klasse ShallowCloneSample {public static void main (String [] args) {EduCourse j2ee = new EduCourse ('Java', 'Spring', 'Microservices') EduLearner elev1 = new EduLearner (2811, 'Max' , j2ee) EduLearner learner2 = null prøve {// Opprette en klon av elev1 og tildele den til elev2 learner2 = (EduLearner) learner1.clone ()} fangst (CloneNotSupportedException e) {e.printStackTrace ()} // Utskriftsdetaljer for Learner1 System.out.p rintln ('Detaljer om elev 2:') System.out.println ('Id:' + learner1.eduId) System.out.println ('Name:' + learner1.learnerName) System.out.println ('Course Id: '+ learner1.eduCourse) // Utskrift av alle kursene til' learner1 'System.out.println (' Courses of Learner 1: ') System.out.println (learner1.eduCourse.course1) System.out.println (elev1. eduCourse.course2) System.out.println (learner1.eduCourse.course3) // Utskriftsdetaljer for Learner2 System.out.println ('Detaljer om Learner 2:') System.out.println ('Id:' + learner2.eduId ) System.out.println ('Name:' + learner2.learnerName) System.out.println ('Course Id:' + learner2.eduCourse) // Utskrift av alle kursene til 'learner2' System.out.println ('Courses av elev 2: ') System.out.println (learner2.eduCourse.course1) System.out.println (learner2.eduCourse.course2) System.out.println (learner2.eduCourse.course3) // Endring av kurset 3 til' elev2 'learner2.eduCourse.course3 =' JSP '// Denne endringen vil gjenspeiles i den originale' learner1 'System.out.println (' Oppdaterte kurs fra lærer 2: ') System.out.println (learner1.eduCourse.course1) System.out.println (elev1.eduCourse.course2) System.out.println (learner1.eduCourse.course3)}}

Produksjon:

Detaljer om elev 2: Id: 2811 Navn: Maks kurs-id: EduCourse @ 15db9742 Kurs til lærer 1: Java Spring Microservices Detaljer om elev 2: Id: 2811 Navn: Maks kurs-id: EduCourse @ 15db9742 Kurs for elev 2: Java Spring Microservices Oppdaterte kurs fra elev 2: Java Spring JSP

Dyp kloning i Java

I Java, når kloningsprosessen er gjort ved å implementere det klonable grensesnittet, kalles det Deep Cloning. I denne typen kloning vil en nøyaktig kopi av alle feltene til det opprinnelige objektet bli opprettet. Men i tilfelle det opprinnelige objektet har referanser til andre objekter som felt, vil en kopi av disse objektene også bli opprettet ved å ringe klon () -metoden. Dette gjør det klonede objektet uavhengig av det opprinnelige objektet, og eventuelle endringer som er gjort i noe av objektet reflekteres ikke på det andre.

Fibra nummer c ++

Nedenfor har jeg gitt eksemplet på det samme:

pakke edureka klasse EduCourse implementerer Cloneable {Strengkurs1 Strengkurs2 Strengkurs3 offentlig EduCourse (String crs1, String crs2, String crs3) {this.course1 = crs1 this.course2 = crs2 this.course3 = crs3} beskyttet Object klon () kaster CloneNceptionSupport returner super.clone ()}} klasse EduLearner implementerer Cloneable {int eduId String learnerName EduCourse eduCourse public EduLearner (int eduId, String learnerName, EduCourse eduCourse) {this.eduId = eduId this.learnerName = learnerName this.eduCourse}. eduCourse Overstyrende klon () -metode for å lage en dyp kopi av et objektbeskyttet Objektklon () kaster CloneNotSupportedException {EduLearner elev = (EduLearner) super.clone () learner.eduCourse = (EduCourse) eduCourse.clone () returner elev}} offentlig klasse DeepCloneSample {public static void main (String [] args) {EduCourse j2ee = new EduCourse ('Java', 'Spring', 'Microservices') EduLearner elev1 = new EduLearner (2811, 'Max', j2ee) EduLearner lær er2 = null prøv {// Opprette en klon av elev1 og tildele den til elev2 lærer2 = (EduLearner) elev1.clone ()} fangst (CloneNotSupportedException e) {e.printStackTrace ()} // Utskriftsdetaljer for Learner1 System.out. println ('Detaljer om elev 2:') System.out.println ('Id:' + learner1.eduId) System.out.println ('Name:' + learner1.learnerName) System.out.println ('Course Id: '+ learner1.eduCourse) // Utskrift av alle kursene til' learner1 'System.out.println (' Courses of Learner 1: ') System.out.println (learner1.eduCourse.course1) System.out.println (elev1. eduCourse.course2) System.out.println (learner1.eduCourse.course3) // Utskriftsdetaljer for Learner2 System.out.println ('Detaljer om Learner 2:') System.out.println ('Id:' + learner2.eduId ) System.out.println ('Name:' + learner2.learnerName) System.out.println ('Course Id:' + learner2.eduCourse) // Utskrift av alle kursene til 'learner2' System.out.println ('Courses av lærer 2: ') System.out.println (learner2.eduCourse.course1) System.out.printl n (learner2.eduCourse.course2) System.out.println (learner2.eduCourse.course3) // Endring av kurs3 for 'learner2' elev2.eduCourse.course3 = 'JSP' // Denne endringen reflekteres ikke i originalen ' elev1 'System.out.println (' Courses of Learner 1: ') System.out.println (learner1.eduCourse.course1) System.out.println (learner1.eduCourse.course2) System.out.println (elev1.eduCourse. kurs3) // Oppdaterte kurs for elev2 System.out.println ('Courses of Learner 2:') System.out.println (learner2.eduCourse.course1) System.out.println (learner2.eduCourse.course2) System.out. println (learner2.eduCourse.course3)}}

Produksjon:

Detaljer om elev 2: Id: 2811 Navn: Max Course Id: edureka.EduCourse@15db9742 Courses of Learner 1: Java Spring Microservices Detaljer om elev 2: Id: 2811 Navn: Max Course Id: edureka.EduCourse@6d06d69c Courses of Learner 2 : Java Spring Microservices Courses of Learner 1: Java Spring Microservices Courses of Learner 2: Java Spring JSP

Dette bringer oss til slutten av denne artikkelen om kloning i Java. Hvis du vil vite mer om Java, kan du henvise til vår .

hvordan du stopper et Java-program i kode

Nå som du har forstått hva som er en kloning i Java, sjekk ut av Edureka, et pålitelig online læringsfirma med et nettverk av mer enn 250 000 fornøyde elever spredt over hele verden. Edurekas Java J2EE- og SOA-opplæring og sertifiseringskurs er designet for studenter og fagpersoner som ønsker å være Java-utvikler. Kurset er designet for å gi deg et forsprang i Java-programmering og trene deg for både kjerne- og avanserte Java-konsepter sammen med forskjellige Java-rammer som Hibernate & Spring.

Har du et spørsmål til oss? Vennligst nevn det i kommentarfeltet i denne 'Kloning i Java' -artikkelen, så kommer vi tilbake til deg så snart som mulig.