Mitä Java-kloonaus ja sen tyypit ovat?



Tämä Javan kloonausta käsittelevä artikkeli antaa sinulle yksityiskohtaisen kuvan kloonausprosessista ja erilaisista Javan tukemista kloonaustyypeistä.

Ohjelmoinnin aikana kohtaamme usein skenaarioita, joissa joudumme käyttämään koko koodinpalaa uudelleen. Koodin uudelleenkirjoittaminen tekee ohjelmasta ison, mikä samalla heikentää ohjelman tehokkuutta. Siten Java tarjoaa meille erinomaisen ominaisuuden, joka pelastaa tämän raskaan tehtävän. Tätä kutsutaan Java-kloonaukseksi, ja tämän artikkelin välityksellä annan sinulle täydellisen käsityksen siitä.

Alla on aiheita, joista keskustelen tässä artikkelissa:





Kloonaus Java-sovelluksessa

Objektikloonaus Java-sovelluksessa on tarkan kopion luominen alkuperäisestä objektista. Toisin sanoen, se on tapa luoda uusi objekti kopioimalla kaikki tiedot ja määritteet alkuperäisestä objektista. Tämä on mahdollista vain ottamalla käyttöön clone () - menetelmä java.lang.objekti luokassa. Kloonimenetelmä luo tarkan kopion objektista, jolle se on ollutkutsutaan kenttäkohtaisesti määritysjärjestyksessä ja palauttaa uuden objektiviitteen . Yksi asia, joka sinun on muistettava Java-sovelluksessa, objektit, jotka toteuttavat kloonirajapinnan, joka on merkkiliittymä, saavat käyttää kloonia ().

kuinka käyttää palvelua nyt

Nyt kun olet tietoinen Java-kloonauksesta, katsotaanpa tämän ominaisuuden käytön etuja.



Javan kloonauksen edut

Alla olen luetellut muutamia mielenkiintoisimpia ominaisuuksia kloonauksen käytöstä Java-sovelluksessa.

  • Auttaa vähentämään koodiriviä.
  • Tehokkain ja tehokkain tapa kopioidaesineitä.
  • Kloonin () katsotaan myös olevan nopein tapa kopioida taulukko.

Huomaa: Vaikka kloonauksen käyttö saattaa johtaa joihinkin suunnitteluongelmiin, mutta jos käytät sitä asianmukaisella strategisella tavalla, siitä voi olla hyötyä.

Kloonaustyypit Javassa

Java-kloonaus voidaan ryhmitelläkahteen luokkaan:



  1. Matala kloonaus
  2. Syvä kloonaus

Ymmärretään kukin niistä yksi kerrallaan.

Matala kloonaus

Java: ssa, kun kloonausprosessi tapahtuu käyttämällä clone () -menetelmää, sitä kutsutaan matalaksi kloonaukseksi. Se on oletusarvoinen kloonausprosessi Javassa, jossa matala kopio alkuperäisestä objektista luodaan tarkalla kentällä. Jos alkuperäisellä objektilla on viittauksia joihinkin muihin objekteihin kenttinä, vain kyseisen objektin viitteet kloonataan uuden objektin luomisen sijaan. Toisin sanoen, jos muutat kloonattujen kohteiden arvoa, se näkyy myös alkuperäisessä. Siten matala kloonaus riippuu alkuperäisestä kohteesta.

java syvä kopio vs matala kopio

matala kopio - kloonaus Javalla - EdurekaAlla olen antanut esimerkin samasta:

paketti edureka-luokka EduCourse {String-kurssi1 String-kurssi2 String-kurssi3 julkinen EduCourse (String crs1, String crs2, String crs3) {this.course1 = crs1 this.course2 = crs2 this.course3 = crs3}} luokka EduLearner toteuttaa Cloneable {int eduId String EduCourse eduCourse public EduLearner (int eduId, String learnerName, EduCourse eduCourse) {this.eduId = eduId this.learnerName = learnerName this.eduCourse = eduCourse} // Clone () -menetelmän oletusversio () menetelmä suojattu Object clone () heittää palauttamaan 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 {// Luodaan oppijan1 klooni ja määritetään se oppijalle2 learner2 = (EduLearner) learner1.clone ()} catch (CloneNotSupportedException e) {e.printStackTrace ()} // Tulostimen yksityiskohdat1 System.out.p rintln ('Oppijan 2 tiedot:') System.out.println ('Id:' + learner1.eduId) System.out.println ('Nimi:' + oppija1.learnerName) System.out.println ('Kurssin tunnus: '+ learner1.eduCourse) // Kaikkien' learner1 '-kurssien tulostaminen System.out.println (' Course of Learner 1: ') System.out.println (learner1.eduCourse.course1) System.out.println (learner1. eduCourse.course2) System.out.println (learner1.eduCourse.course3) // Oppijan2 tulostustiedot System.out.println ('Oppijan 2 tiedot:') System.out.println ('Id:' + learner2.eduId ) System.out.println ('Nimi:' + learner2.learnerName) System.out.println ('Kurssin tunnus:' + learner2.eduCourse) // Kaikkien 'learner2' -kurssien tulostaminen System.out.println ('Kurssit oppilaan 2: ') System.out.println (learner2.eduCourse.course1) System.out.println (learner2.eduCourse.course2) System.out.println (learner2.eduCourse.course3) //' oppijan2 kurssin3 muuttaminen 'learner2.eduCourse.course3 =' JSP '// Tämä muutos näkyy alkuperäisessä' learner1 'System.out.println (' Päivitetyt oppilaan 2 kurssit: ') System.out.println (learner1.eduCourse.course1) System.out.println (learner1.eduCourse.course2) System.out.println (learner1.eduCourse.course3)}}

Tuotos:

Oppijan 2 tiedot: Id: 2811 Nimi: Maksimikurssin tunnus: EduCourse @ 15db9742 Oppijan 1 kurssit: Java Spring Microservices Oppijan 2 tiedot: Id: 2811 Nimi: Kurssin enimmäismäärä: EduCourse @ 15db9742 Oppijan 2 kurssit: Java-jousipalvelut Päivitetyt Oppija 2 -kurssit: Java Spring JSP

Syvä kloonaus Java-sovelluksessa

Java: ssa, kun kloonausprosessi suoritetaan toteuttamalla Cloneable-käyttöliittymä, sitä kutsutaan Deep Cloningiksi. Tämän tyyppisessä kloonauksessa luodaan tarkka kopio alkuperäisen objektin kaikista kentistä. Mutta siinä tapauksessa, että alkuperäisellä objektilla on viittauksia muihin kohteisiin kentinä, kopio näistä objekteista luodaan myös kutsumalla clone () -metodi. Tämä tekee kloonatun objektin riippumattomaksi alkuperäisestä objektista, eikä mihinkään objektiin tehtyjä muutoksia heijastu toiseen.

luvun kääntäminen Java-muodossa

Alla olen antanut esimerkin samasta:

paketti edureka-luokka EduCourse toteuttaa Cloneable {String-kurssi1 String-kurssi2 String-kurssi3 julkinen EduCourse (String crs1, String crs2, String crs3) {this.course1 = crs1 this.course2 = crs2 this.course3 = crs3} suojattu objektiklooni () heittää CloneExcup return super.clone ()}} luokka EduLearner toteuttaa Cloneable {int eduId merkkijono oppijanimi EduCourse eduCourse julkinen EduLearner (int eduId, merkkijono oppijanimi, EduCourse eduCourse) {this.eduId = eduId this.learnerName = oppijanimi this.eduCourse Kloonin () korvaava menetelmä suojatun objektin syvän kopion luomiseksi Objektiklooni () heittää CloneNotSupportedException {EduLearner learner = (EduLearner) super.clone () learner.eduCourse = (EduCourse) eduCourse.clone () return learner}} public class 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 yritä {// Luodaan oppijan1 klooni ja määritetään se oppijalle2 oppija2 = (EduLearner) oppija1.klooni ()} saalis (CloneNotSupportedException e) {e.printStackTrace ()} // Oppijan1 System.out tulostustiedot. println ('Tiedot oppijasta 2:') System.out.println ('Id:' + learner1.eduId) System.out.println ('Nimi:' + oppija1.learnerName) System.out.println ('Kurssin tunnus: '+ learner1.eduCourse) // Kaikkien' learner1 '-kurssien tulostaminen System.out.println (' Course of Learner 1: ') System.out.println (learner1.eduCourse.course1) System.out.println (learner1. eduCourse.course2) System.out.println (learner1.eduCourse.course3) // Oppijan2 tulostustiedot System.out.println ('Oppijan 2 tiedot:') System.out.println ('Id:' + learner2.eduId ) System.out.println ('Nimi:' + learner2.learnerName) System.out.println ('Kurssin tunnus:' + learner2.eduCourse) // Kaikkien 'learner2' -kurssien tulostaminen System.out.println ('Kurssit Oppija 2: ') System.out.println (learner2.eduCourse.course1) System.out.printl n (learner2.eduCourse.course2) System.out.println (learner2.eduCourse.course3) // Learner2: n kurssin3 muuttaminen learner2.eduCourse.course3 = 'JSP' // Tätä muutosta ei kuvata alkuperäisessä. learner1 'System.out.println (' Oppijan 1 kurssit: ') System.out.println (learner1.eduCourse.course1) System.out.println (learner1.eduCourse.course2) System.out.println (learner1.eduCourse. kurssi3) // Päivitetyt oppilaan2 kurssit System.out.println ('Oppijan 2 kurssit:') System.out.println (oppija2.eduCourse.kurssi1) System.out.println (oppija2.eduCourse.course2) System.out. println (oppija2.eduKurssi.kurssi3)}}

Tuotos:

Oppijan 2 tiedot: Id: 2811 Nimi: Maksimikurssin tunnus: edureka.EduCourse@15db9742 Oppijan 1 kurssit: Java Spring Microservices Oppijan 2 tiedot: Id: 2811 Nimi: Kurssin enimmäismäärä: edureka.EduCourse@6d06d69c Oppijan 2 kurssit : Java Spring Microservice -kurssit oppijalle 1: Java Spring Microservice -kurssit oppijalle 2: Java Spring JSP

Tämä tuo meidät tämän Java-kloonausta koskevan artikkelin loppuun. Jos haluat tietää enemmän Java: sta, voit viitata sivuillamme .

Nyt kun olet ymmärtänyt, mikä on Java-kloonaus, tutustu Edureka, luotettava verkko-oppimisyritys, jolla on yli 250 000 tyytyväisen oppijan verkosto, joka levisi ympäri maailmaa. Edurekan Java J2EE- ja SOA-koulutus- ja sertifiointikurssi on suunniteltu opiskelijoille ja ammattilaisille, jotka haluavat olla Java-kehittäjiä. Kurssi on suunniteltu antamaan sinulle etumatka Java-ohjelmointiin ja kouluttamaan sekä ydin- että edistyneitä Java-konsepteja sekä erilaisia ​​Java-kehyksiä, kuten Hibernate & Spring.

Onko sinulla kysymys meille? Mainitse se tämän 'Kloonaus Java-artikkelissa' kommenttiosassa ja otamme sinuun yhteyttä mahdollisimman pian.