Mis on kloonimine Java-s ja selle tüübid?



See artikkel Java kloonimise kohta annab teile üksikasjaliku ülevaate kloonimisprotsessist ja Java toetatud erinevatest kloonimistüüpidest.

Programmeerimise ajal kohtame sageli stsenaariume, kus peame kogu kooditüki uuesti kasutama. Koodi ümberkirjutamine muudab programmi mahukaks, vähendades samal ajal programmi tõhusust. Seega pakub Java meile suurepärase funktsiooni, mis päästab sellest koormavast ülesandest. Seda nimetatakse Java-s kloonimiseks ja selle artikli vahendusel annan teile sellest täieliku ülevaate.

Allpool on toodud teemad, mida selles artiklis käsitlen:





Kloonimine Javas

Objektide kloonimine Java-s on algse objekti täpse koopia loomine. Teisisõnu, see on viis uue objekti loomiseks, kopeerides kõik andmed ja atribuudid algsest objektist. See on võimalik ainult klooni () meetodi juurutamisel java.lang.objekt klass. Kloonimeetod loob täpse koopia objektist, mille jaoks see on olnudkutsutakse väljade kaupa määramisjärjekorras ja tagastab uue objekti viite . Üks asi, mida peate Java-s meeles pidama, on objektidel, mis rakendavad klooniliidest, mis on markerliides, klooni () kasutada.

Nüüd, kui olete teadlik Java kloonimisest, vaatame selle funktsiooni kasutamise eeliseid.



Kloonimise eelised Java-s

Allpool on loetletud mõned kõige intrigeerivamad funktsioonid Java kloonimise kasutamisel.

  • Aitab koodiridade vähendamisel.
  • Kõige tõhusam ja tõhusam viis kopeerimiseksobjektid.
  • Samuti peetakse klooni () massiivi kopeerimise kõige kiiremaks meetodiks.

Märkus. Kuigi kloonimise kasutamine võib põhjustada mõningaid disainiprobleeme, võib see teile kasulikuks osutuda siiski strateegilisel viisil.

Kloonimise tüübid Java-s

Java-s kloonimist saab grupeeridakahte kategooriasse:



mis on java keeles söe
  1. Madal kloonimine
  2. Sügav kloonimine

Mõistame neid kõiki ükshaaval.

Madal kloonimine

Kui kloonimisprotsess viiakse läbi klooni () meetodi kutsumisega, nimetatakse Java-s Shallow Cloninguks. See on Java-s vaikekloonimisprotsess, kus luuakse algse objekti madal koopia täpse väljaga. Kui algsel objektil on väljadena viiteid mõnele muule objektile, kloonitakse uue objekti loomise asemel ainult selle objekti viited. Teisisõnu, kui muudate kloonitud objektide väärtust, kajastub see ka originaalis. Seega sõltub madal kloonimine algsest objektist.

madal eksemplar - kloonimine Java-s - EdurekaAllpool olen toonud näite samast:

pakett edureka klass EduCourse {Stringikursus1 Stringirada2 Stringikursus3 avalik EduCourse (String crs1, String crs2, String crs3) {this.course1 = crs1 this.course2 = crs2 this.course3 = crs3}} klass EduLearner rakendab Clonable {int eduId String ling EduCourse eduCourse public EduLearner (int eduId, String learnerName, EduCourse eduCourse) {this.eduId = eduId this.learnerName = learnerName this.eduCourse = eduCourse} // Klooni vaikeversioon () meetodiga kaitstud Objekti kloon () viskab tagasi CloneNotSup .clone ()}} public class ShallowCloneSample {public static void main (String [] args) {EduCourse j2ee = new EduCourse ('Java', 'Spring', 'Microservices') EduLearner learner1 = new EduLearner (2811, 'Max') , j2ee) EduLearner learner2 = null try {// Õppija1 klooni loomine ja selle määramine õppijale2 õppija2 = (EduLearner) õppija1.kloon ()} saak (CloneNotSupportedException e) {e.printStackTrace ()} // Õppija1 üksikasjade printimine System.out.p rintln ('Õppija 2 üksikasjad:') System.out.println ('Id:' + learner1.eduId) System.out.println ('Nimi:' + õppija1.learnerName) System.out.println ('Kursuse ID: '+ learner1.eduCourse) // Kõigi' õppija1 'kursuste printimine System.out.println (' 1 õppija kursused: ') System.out.println (õppija1.eduCourse.course1) System.out.println (õppija1. eduCourse.course2) System.out.println (learner1.eduCourse.course3) // Learner2 üksikasjade printimine System.out.println ('Õppija 2 üksikasjad:') System.out.println ('Id:' + learner2.eduId ) System.out.println ('Nimi:' + õppija2.learnerName) System.out.println ('Kursuse ID:' + learner2.eduCourse) // Kõigi 'õppija2' kursuste printimine System.out.println ('Kursused õppija 2: ') System.out.println (learner2.eduCourse.course1) System.out.println (learner2.eduCourse.course2) System.out.println (learner2.eduCourse.course3) //' õppija2 kursuse3 muutmine 'learner2.eduCourse.course3 =' JSP '// See muudatus kajastub originaalis' learner1 'System.out.println (' Uuendatud õppija 2 kursused: ') System.out.println (learner1.eduCourse.course1) System.out.println (learner1.eduCourse.course2) System.out.println (learner1.eduCourse.course3)}}

Väljund:

Õppija 2 üksikasjad: Id: 2811 Nimi: Kursuse maksimaalne ID: EduCourse @ 15db9742 1. õppija kursused: Java Spring Microservices Õppija 2 üksikasjad: Id: 2811 Nimi: Kursuse maksimaalne ID: EduCourse @ 15db9742 Õppija 2 kursused: Java kevadised mikroteenused Uuendatud õppija 2 kursused: Java Spring JSP

Sügav kloonimine Java-s

Kui kloonimisprotsess toimub kloonitava liidese juurutamise abil, nimetatakse Java-s seda Deep Cloninguks. Seda tüüpi kloonimisel luuakse algse objekti kõigi väljade täpne koopia. Kuid juhul, kui algsel objektil on väljadena viiteid teistele objektidele, luuakse nende objektide koopia ka meetodi clone () kutsumisel. See muudab kloonitud objekti algsest objektist sõltumatuks ja mis tahes objektis tehtud muudatused ei kajastu teisel.

Allpool olen toonud näite samast:

pakett edureka klass EduCourse rakendab Cloneable {Stringikursus1 Stringirada2 Stringikursus3 avalik EduCourse (String crs1, String crs2, String crs3) {this.course1 = crs1 this.course2 = crs2 this.course3 = crs3} kaitstud objekti kloon () viskab CloneExcupi tagastab super.clone ()}} klassi EduLearner rakendab Cloneable {int eduId String õppijaNimi EduCourse eduCourse avalik EduLearner (int eduId, String õppija nimi, EduCourse eduCourse) {this.eduId = eduId this.learnerName = õppijaNimi this.eduCourse Klooni () ülimuslik meetod objektiga kaitstud sügava koopia loomiseks Objekti kloon () viskab CloneNotSupportedException {EduLearner õppur = (EduLearner) super.clone () learner.eduCourse = (EduCourse) eduCourse.clone () return learner}} avalik klass 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 proovige {// Õppija1 klooni loomine ja määramine õppijale 2 õppija2 = (EduLearner) õppija1.kloon ()} saak (CloneNotSupportedException e) {e.printStackTrace ()} // Õppija1 System.out üksikasjade printimine. println ('Õppija 2 üksikasjad:') System.out.println ('Id:' + learner1.eduId) System.out.println ('Nimi:' + õppija1.learnerName) System.out.println ('Kursuse ID: '+ learner1.eduCourse) // Kõigi' õppija1 'kursuste printimine System.out.println (' 1 õppija kursused: ') System.out.println (õppija1.eduCourse.course1) System.out.println (õppija1. eduCourse.course2) System.out.println (learner1.eduCourse.course3) // Learner2 üksikasjade printimine System.out.println ('Õppija 2 üksikasjad:') System.out.println ('Id:' + learner2.eduId ) System.out.println ('Nimi:' + õppija2.learnerName) System.out.println ('Kursuse ID:' + learner2.eduCourse) // Kõigi 'õppija2' kursuste printimine System.out.println ('Kursused õppija 2: ') System.out.println (õppija2.eduCourse.course1) System.out.printl n (õppija2.eduCourse.course2) System.out.println (õppija2.eduCourse.course3) // 'õppija2' kursuse3 muutmine õppija2.eduCourse.course3 = 'JSP' // See muudatus ei kajastu originaalis ' õppija1 'System.out.println (' Õppija 1 kursused: ') System.out.println (õppija1.eduCourse.course1) System.out.println (õppija1.eduCourse.course2) System.out.println (õppija1.eduCourse. kursus3) // Õppija2 uuendatud kursused System.out.println ('Õppija 2 kursused:') System.out.println (õppija2.eduCourse.course1) System.out.println (õppija2.eduCourse.course2) System.out. println (õppija2.eduKursus.kursus3)}}

Väljund:

Õppija 2 andmed: Id: 2811 Nimi: Kursuse maksimaalne ID: edureka.EduCourse@15db9742 Õppija 1 kursused: Java Spring Microservices Õppija 2 üksikasjad: Id: 2811 Nimi: Kursuse maksimaalne ID: edureka.EduCourse@6d06d69c Õppija 2 kursused : Java 1. õppija Microsofti Microsofti kursused: Õppija Java Java mikroteenuste kursused: Java Spring JSP

Sellega jõuame selle Java kloonimist käsitleva artikli lõpuni. Kui soovite Java kohta rohkem teada saada, võite pöörduda meie poole .

Nüüd, kui olete aru saanud, mis on Java kloonimine, vaadake autor Edureka, usaldusväärne veebiõppeettevõte, mille võrgustik koosneb enam kui 250 000 rahulolevast õppijast ja mis levib üle kogu maailma. Edureka Java J2EE ja SOA koolitus- ja sertifitseerimiskursus on mõeldud õpilastele ja spetsialistidele, kes soovivad olla Java arendajad. Kursus on loodud selleks, et anda teile Java-programmeerimises alustamine ja õpetada teid nii Java-põhiprogrammide kui ka täiustatud kontseptsioonide ning erinevate Java-raamistike jaoks, nagu Hibernate & Spring.

Kas teil on meile küsimus? Palun mainige seda selle artikli 'Java kloonimine' kommentaaride jaotises ja võtame teiega ühendust niipea kui võimalik.