Kaj je kloniranje v Javi in ​​njene vrste?



V tem članku o Kloniranju v Javi boste našli podrobne vpoglede v postopek kloniranja in različne vrste kloniranja, ki jih podpira Java.

Med programiranjem pogosto naletimo na scenarije, ko moramo ponovno uporabiti celoten del kode. S ponovnim pisanjem kode je program zajet, hkrati pa zmanjša učinkovitost programa. Tako nam Java ponuja odlično funkcijo, ki nas reši pred to obremenjujočo nalogo. To je znano kot Kloniranje v Javi in ​​s pomočjo tega članka vam bom dal popoln vpogled v to.

Spodaj so teme, o katerih bom razpravljal v tem članku:





Kloniranje v Javi

Kloniranje predmetov v Javi je postopek ustvarjanja natančne kopije prvotnega predmeta. Z drugimi besedami, to je način ustvarjanja novega predmeta s kopiranjem vseh podatkov in atributov iz prvotnega predmeta. To je mogoče le z uporabo metode clone () metode java.lang.Object razred. Klonska metoda ustvari natančno kopijo predmeta, za katerega je bilaprikliče v vrstnem redu dodeljevanja in vrne novo referenco predmeta . Nekaj, česar se morate zavedati, v Javi lahko predmeti, ki izvajajo vmesnik klona, ​​ki je vmesnik označevalnika, uporabljajo klon ().

Zdaj, ko se zavedate, kaj je kloniranje v Javi, si oglejmo različne prednosti uporabe te funkcije.



Prednosti kloniranja v Javi

Spodaj sem naštel nekaj najbolj zanimivih lastnosti uporabe kloniranja v Javi.

  • Pomaga pri zmanjševanju vrstic kode.
  • Najučinkovitejši in najučinkovitejši način kopiranjapredmetov.
  • Klon () velja tudi za najhitrejši način kopiranja matrike.

Opomba: Čeprav lahko uporaba kloniranja povzroči nekaj težav z oblikovanjem, če pa jo uporabljate na ustrezen strateški način, vam lahko koristi.

Vrste kloniranja v Javi

Kloniranje v Javi je mogoče razvrstiti v skupinev dve kategoriji:



  1. Plitvo kloniranje
  2. Globoko kloniranje

Razumejmo vsakega posebej.

Plitvo kloniranje

Ko se postopek kloniranja v Javi prikliče z uporabo metode clone (), se imenuje plitko kloniranje. To je privzeti postopek kloniranja v Javi, kjer bo ustvarjena plitva kopija izvirnega predmeta z natančnim poljem. V primeru, da ima prvotni objekt kot polja reference na nekatere druge predmete, bodo namesto ustvarjanja novega predmeta klonirane samo reference tega predmeta. Z drugimi besedami, če spremenite vrednost kloniranih predmetov, se bo to odražalo tudi v izvirniku. Tako je plitvo kloniranje odvisno od prvotnega predmeta.

plitka kopija - Kloniranje v Javi - EdurekaSpodaj sem navedel primer istega:

paket edureka class EduCourse {String course1 String course2 String course3 public EduCourse (String crs1, String crs2, String crs3) {this.course1 = crs1 this.course2 = crs2 this.course3 = crs3}} class EduLearner implementira Cloneable {int eduId String LearnerName EduCourse eduCourse public EduLearner (int eduId, String LearnerName, EduCourse eduCourse) {this.eduId = eduId this.learnerName = LearnerName this.eduCourse = eduCourse} // Privzeta različica clone () metoda zaščitena Object clone () vrže CloneNotSupportedException {vrne super super .clone ()}} javni razred ShallowCloneSample {public static void main (String [] args) {EduCourse j2ee = new EduCourse ('Java', 'Spring', 'Microservices') EduLearner učenec1 = novi EduLearner (2811, 'Max' , j2ee) EduLearner Learner2 = null try {// Ustvari klon učenca1 in ga dodeli učencu2 Learner2 = (EduLearner) Learner1.clone ()} catch (CloneNotSupportedException e) {e.printStackTrace ()} // Tiskanje podrobnosti o Learner1 System.out.p rintln ('Podrobnosti o učencu 2:') System.out.println ('Id:' + Learner1.eduId) System.out.println ('Ime:' + Learner1.learnerName) System.out.println ('Id predmeta: '+ Learner1.eduCourse) // Tiskanje vseh tečajev' Learner1 'System.out.println (' Tečaji učenca 1: ') System.out.println (Learner1.eduCourse.course1) System.out.println (učenec1. eduCourse.course2) System.out.println (Learner1.eduCourse.course3) // Tiskanje podrobnosti o Learner2 System.out.println ('Podrobnosti o učencu 2:') System.out.println ('Id:' + Learner2.eduId ) System.out.println ('Ime:' + Learner2.learnerName) System.out.println ('Id tečaja:' + Learner2.eduCourse) // Tiskanje vseh tečajev 'Learner2' System.out.println ('Tečaji učencev 2: ') System.out.println (Learner2.eduCourse.course1) System.out.println (Learner2.eduCourse.course2) System.out.println (Learner2.eduCourse.course3) // Spreminjanje tečaja3' učenec2 'Learner2.eduCourse.course3 =' JSP '// Ta sprememba bo prikazana v prvotnem' Learner1 'System.out.println (' Posodobljeni tečaji za učence 2: ') System.out.println (Learner1.eduCourse.course1) System.out.println (Learner1.eduCourse.course2) System.out.println (Learner1.eduCourse.course3)}}

Izhod:

Podrobnosti o učencu 2: Id: 2811 Ime: Max ID predmeta: EduCourse @ 15db9742 Tečaji učenca 1: Java Spring Microservices Podrobnosti o učencu 2: Id: 2811 Ime: Max Id predmeta: EduCourse @ 15db9742 Tečaji učenca 2: Java Spring Microservices Posodobljeni tečaji za učence 2: Java Spring JSP

Globoko kloniranje v Javi

V Javi se postopek kloniranja z izvedbo vmesnika Cloneable imenuje globoko kloniranje. Pri tej vrsti kloniranja bo ustvarjena natančna kopija vseh polj prvotnega predmeta. Toda v primeru, da ima prvotni objekt sklicevanja na druge predmete kot polja, bo kopija teh predmetov ustvarjena tudi s klicanjem metode clone (). Zaradi tega je klonirani objekt neodvisen od prvotnega predmeta in vse spremembe, ki jih naredite v katerem koli predmetu, se ne bodo odražale na drugem.

nadaljevanje razvijalca za začetnike python

Spodaj sem navedel primer istega:

paket edureka class EduCourse izvaja Cloneable {String course1 String course2 String course3 public EduCourse (String crs1, String crs2, String crs3) {this.course1 = crs1 this.course2 = crs2 this.course3 = crs3} zaščiten klon predmeta () vrže CloneNotSupportedException return super.clone ()}} razred EduLearner izvaja Cloneable {int eduId String LearnerName EduCourse eduCourse public EduLearner (int eduId, String LearnerName, EduCourse eduCourse) {this.eduId = eduId this.learnerName = LearnerName this.eduCourse = eduCourse} // Preglasitev metode clone () za ustvarjanje globoke kopije predmetno zaščitenega Object clone () vrže CloneNotSupportedException {EduLearner Learner = (EduLearner) super.clone () Learner.eduCourse = (EduCourse) eduCourse.clone () return učenec}} javni razred DeepCloneSample {public static void main (String [] args) {EduCourse j2ee = new EduCourse ('Java', 'Spring', 'Microservices') EduLearner Learner1 = new EduLearner (2811, 'Max', j2ee) EduLearner learn er2 = null try {// Ustvari klon učenca1 in ga dodeli učencu2 učenec2 = (EduLearner) Learner1.clone ()} catch (CloneNotSupportedException e) {e.printStackTrace ()} // Tiskanje podrobnosti sistema Learner1 System.out. println ('Podrobnosti o učencu 2:') System.out.println ('Id:' + Learner1.eduId) System.out.println ('Ime:' + Learner1.learnerName) System.out.println ('Id predmeta: '+ Learner1.eduCourse) // Tiskanje vseh tečajev' Learner1 'System.out.println (' Tečaji učenca 1: ') System.out.println (Learner1.eduCourse.course1) System.out.println (učenec1. eduCourse.course2) System.out.println (Learner1.eduCourse.course3) // Tiskanje podrobnosti o Learner2 System.out.println ('Podrobnosti o učencu 2:') System.out.println ('Id:' + Learner2.eduId ) System.out.println ('Ime:' + Learner2.learnerName) System.out.println ('Id tečaja:' + Learner2.eduCourse) // Tiskanje vseh tečajev 'Learner2' System.out.println ('Tečaji učencev 2: ') System.out.println (Learner2.eduCourse.course1) System.out.printl n (Learner2.eduCourse.course2) System.out.println (Learner2.eduCourse.course3) // Spreminjanje tečaja3 'Learner2' Learner2.eduCourse.course3 = 'JSP' // Ta sprememba ne bo prikazana v izvirniku ' učenec1 'System.out.println (' Tečaji učenca 1: ') System.out.println (Learner1.eduCourse.course1) System.out.println (Learner1.eduCourse.course2) System.out.println (Learner1.eduCourse. course3) // Posodobljeni tečaji učenca2 System.out.println ('Tečaji učenca 2:') System.out.println (Learner2.eduCourse.course1) System.out.println (Learner2.eduCourse.course2) System.out. println (učenec2.eduCourse.course3)}}

Izhod:

Podrobnosti o učencu 2: Id: 2811 Ime: Max Id predmeta: edureka.EduCourse@15db9742 Tečaji učenca 1: Java Spring Microservices Podrobnosti učenca 2: Id: 2811 Ime: Max ID predmeta: edureka.EduCourse@6d06d69c Tečaji učenca 2 : Java Spring Microservices Tečaji za učence 1: Java Spring Microservices Tečaji za učence 2: Java Spring JSP

S tem smo prišli do konca tega članka o Kloniranju v Javi. Če želite izvedeti več o Javi, se lahko obrnete na našo .

Zdaj, ko ste razumeli, kaj je kloniranje v Javi, si oglejte Edureka, zaupanja vredno podjetje za spletno učenje z mrežo več kot 250.000 zadovoljnih učencev, razširjenih po vsem svetu. Edurekin tečaj za usposabljanje in certificiranje Java J2EE in SOA je namenjen študentom in strokovnjakom, ki želijo biti razvijalec Java. Tečaj je zasnovan tako, da vam omogoči uvod v programiranje Java in vas usposobi za osnovne in napredne koncepte Java, skupaj z različnimi Java okviri, kot so Hibernate & Spring

Imate vprašanje za nas? Prosimo, omenite ga v oddelku za komentarje tega članka o 'Kloniranju v Javi', da se vam bomo javili v najkrajšem možnem času.