Kas ir klonēšana Java un tās veidi?

Šis raksts par Java klonēšanu sniegs detalizētu ieskatu par klonēšanas procesu un dažādiem Java atbalstītajiem klonēšanas veidiem.

Programmējot, mēs bieži sastopamies ar scenārijiem, kad mums ir atkārtoti jāizmanto viss koda gabals. Pārrakstot kodu, programma kļūst apjomīga, vienlaikus samazinot programmas efektivitāti. Tādējādi Java nodrošina mums lielisku iespēju, kas tiek glābta no šī apgrūtinošā uzdevuma. Tas ir pazīstams kā Java klonēšana, un, izmantojot šo rakstu, es sniegšu jums pilnīgu ieskatu par to.

apvienot kārtošanas ieviešanu c ++

Tālāk ir norādītas tēmas, kuras es apspriedīšu šajā rakstā:





Klonēšana Java valodā

Objekta klonēšana Java ir oriģinālā objekta precīzas kopijas izveides process. Citiem vārdiem sakot, tas ir veids, kā izveidot jaunu objektu, kopējot visus datus un atribūtus no sākotnējā objekta. Tas ir iespējams tikai, ieviešot klona () metodi java.lang.Object klasē. Klona metode izveido precīzu objekta kopiju, kurai tā ir bijusiizsaukts katrā laukā piešķiršanas secībā un atgriezīs jauno objekta atsauci . Viena lieta, kas jums jāatceras Java valodā, objektiem, kas ievieš klona saskarni, kas ir marķiera saskarne, ir atļauts izmantot klonu ().

Tagad, kad esat informēts par Java klonēšanu, apskatīsim dažādas šīs funkcijas izmantošanas priekšrocības.



Klonēšanas priekšrocības Java

Zemāk esmu uzskaitījis dažas visintriģējošākās klonēšanas izmantošanas iespējas Java.

  • Palīdz samazināt koda rindas.
  • Visefektīvākais un efektīvākais kopēšanas veidsobjektiem.
  • Arī klons () tiek uzskatīts par ātrāko masīva kopēšanas metodi.

Piezīme. Lai gan klonēšanas izmantošana var radīt dažas dizaina problēmas, taču, ja to izmantojat pareizā stratēģiskā veidā, tas var nākt par labu.

Klonēšanas veidi Java

Klonēšanu Java var grupētdivās kategorijās:



  1. Sekla klonēšana
  2. Dziļā klonēšana

Sapratīsim katru no tiem pa vienam.

Sekla klonēšana

Ja klonēšanas process tiek veikts, izmantojot klona () metodi, Java to sauc par seklu klonēšanu. Tas ir noklusējuma Java klonēšanas process, kurā tiks izveidota sākotnējā objekta sekla kopija ar precīzu lauku. Ja sākotnējam objektam ir atsauces uz dažiem citiem objektiem kā laukiem, tad jauna objekta izveides vietā tiks klonētas tikai šī objekta atsauces. Citiem vārdiem sakot, ja maināt klonēto objektu vērtību, tas tiks atspoguļots arī oriģinālā. Tādējādi sekla klonēšana ir atkarīga no sākotnējā objekta.

sekla kopija - Klonēšana Java valodā - EdurekaZemāk es minēju to pašu piemēru:

pakete edureka klase EduCourse {virknes kurss1 virknes kurss2 virknes kurss3 publiskais EduCourse (virkne crs1, virkne crs2, virkne crs3) {this.course1 = crs1 this.course2 = crs2 this.course3 = crs3}} klase EduLearner ievieš Clonable {int eduId String EduCourse eduCourse public EduLearner (int eduId, String learnerName, EduCourse eduCourse) {this.eduId = eduId this.learnerName = learnerName this.eduCourse = eduCourse} // Klona noklusējuma versija () Metode aizsargāta Objekta klons () meta atpakaļ 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 mēģiniet {// Izveidot studenta1 klonu un piešķirt to apmācāmajam2 learner2 = (EduLearner) learner1.clone ()} catch (CloneNotSupportedException e) {e.printStackTrace ()} // Sīkāka informācija par apmācību1 System.out.p rintln ('Informācija par 2. izglītojamo:') System.out.println ('Id:' + learner1.eduId) System.out.println ('Nosaukums:' + izglītojamais1.learnerName) System.out.println ('Kursa ID: '+ learner1.eduCourse) // Visu kursa' apmācāmais1 'izdruka System.out.println (' Kursi 1: ') System.out.println (skolēns1.eduCourse.course1) System.out.println (izglītojamais1. eduCourse.course2) System.out.println (learner1.eduCourse.course3) // Learner2 detaļu drukāšana System.out.println ('Informācija par 2. izglītojamo:') System.out.println ('Id:' + learner2.eduId ) System.out.println ('Name:' + learner2.learnerName) System.out.println ('Course Id:' + learner2.eduCourse) // Visu programmas 'learner2' kursu drukāšana System.out.println ('Courses 2. apmācāmā: ') System.out.println (learner2.eduCourse.course1) System.out.println (learner2.eduCourse.course2) System.out.println (learner2.eduCourse.course3) //' Izglītoja2 kursa3 maiņa 'learner2.eduCourse.course3 =' JSP '// Šīs izmaiņas tiks atspoguļotas sākotnējā' learner1 'System.out.println (' Atjaunināti 2. apmācāmā kursi: ') System.out.println (learner1.eduCourse.course1) System.out.println (learner1.eduCourse.course2) System.out.println (learner1.eduCourse.course3)}}

Izeja:

Sīkāka informācija par 2. izglītojamo: Id: 2811 Nosaukums: Maksimālais kursa ID: EduCourse @ 15db9742 1. izglītojamā kursi: Java pavasara mikropakalpojumi Sīkāka informācija par 2. izglītojamo: Id: 2811 Nosaukums: Maks. Kursa Id: EduCourse @ 15db9742 2. apmācāmā kursi: Java pavasara mikropakalpojumi Atjaunināti 2. apmācāmā kursi: Java Spring JSP

Dziļā klonēšana Java

Ja klonēšanas process tiek veikts, ieviešot saskarni Cloneable, Java to sauc par dziļo klonēšanu. Šāda veida klonēšanā tiks izveidota visu sākotnējā objekta lauku precīza kopija. Bet gadījumā, ja sākotnējam objektam ir atsauces uz citiem objektiem kā laukiem, šo objektu kopija tiks izveidota arī, izsaucot metodi clone (). Tas padara klonēto objektu neatkarīgu no sākotnējā objekta, un jebkuras objektā veiktās izmaiņas netiks atspoguļotas otrā.

Zemāk es minēju to pašu piemēru:

pakete edureka klase EduCourse realizē Cloneable {String course1 String course2 String course3 public EduCourse (String crs1, String crs2, String crs3) {this.course1 = crs1 this.course2 = crs2 this.course3 = crs3} aizsargāts objekta klons () throws CloneExcup atgriezt super.clone ()}} klasi EduLearner ievieš Cloneable {int eduId virknes apmācāmāName EduCourse eduCourse publiskais EduLearner (int eduId, virknes apmācāmāName, EduCourse eduCourse) {this.eduId = eduId this.learnerName = izglītojamānosaukums this.eduCourse Klona () metode, lai izveidotu objekta aizsargātas objekta dziļu kopiju, objekta klons () izmet 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 mēģiniet {// Izveidot apmācāmā1 klonu un piešķirt to izglītojamam2 izglītojamam2 = (EduLearner) izglītojamajam1.klonam ()} nozvejai (CloneNotSupportedException e) {e.printStackTrace ()} // Sīkāka informācija par Learner1 System.out drukāšanu. println ('Informācija par 2. izglītojamo:') System.out.println ('Id:' + learner1.eduId) System.out.println ('Nosaukums:' + izglītojamais1.learnerName) System.out.println ('Kursa ID: '+ learner1.eduCourse) // Visu kursa' apmācāmais1 'izdruka System.out.println (' Kursi 1: ') System.out.println (skolēns1.eduCourse.course1) System.out.println (izglītojamais1. eduCourse.course2) System.out.println (learner1.eduCourse.course3) // Learner2 detaļu drukāšana System.out.println ('Informācija par 2. izglītojamo:') System.out.println ('Id:' + learner2.eduId ) System.out.println ('Name:' + learner2.learnerName) System.out.println ('Course Id:' + learner2.eduCourse) // Visu programmas 'learner2' kursu drukāšana System.out.println ('Courses 2. apmācāmā: ') System.out.println (learner2.eduCourse.course1) System.out.printl n (learner2.eduCourse.course2) System.out.println (learner2.eduCourse.course3) // 'Learner2' kursa3 maiņa learner2.eduCourse.course3 = 'JSP' // Šīs izmaiņas netiks atspoguļotas oriģinālā ' learner1 'System.out.println (' 1. apmācāmā kursi: ') System.out.println (learner1.eduCourse.course1) System.out.println (learner1.eduCourse.course2) System.out.println (learner1.eduCourse. kurss3) // Atjaunināti apmācāmā2 kursi System.out.println ('2. mācību kursi:') System.out.println (izglītojamais2.eduCourse.course1) System.out.println (izglītojamais2.eduCourse.course2) System.out. println (learner2.eduCourse.course3)}}

Izeja:

Informācija par 2. izglītojamo: Id: 2811 Nosaukums: Maks. Kursa ID: edureka.EduCourse@15db9742 1. izglītojamā kursi: Java Spring Microservices Sīkāka informācija par 2. izglītojamo: Id: 2811 Nosaukums: Maks. Kursa Id: edureka.EduCourse@6d06d69c 2. apmācāmā kursi : Java 1. apmācāmā Java pavasara mikropakalpojumu kursi: Java 2. apmācāmā Java pavasara mikropakalpojumu kursi: Java pavasara JSP

Tas noved mūs pie šī raksta par Java klonēšanu beigām. Ja vēlaties uzzināt vairāk par Java, varat atsaukties uz mūsu .

Tagad, kad esat sapratis, kas ir Java klonēšana, pārbaudiet Autors: Edureka, uzticams tiešsaistes mācību uzņēmums ar vairāk nekā 250 000 apmierinātu izglītojamo tīklu visā pasaulē. Edureka Java J2EE un SOA apmācības un sertifikācijas kurss ir paredzēts studentiem un profesionāļiem, kuri vēlas būt Java izstrādātāji. Kurss ir paredzēts, lai dotu jums sākumu Java programmēšanā un apmācītu gan Java, gan uzlabotas koncepcijas, kā arī dažādas Java struktūras, piemēram, Hibernate & Spring.

Vai mums ir jautājums? Lūdzu, pieminējiet to šī raksta “Klonēšana Java” komentāru sadaļā, un mēs pēc iespējas ātrāk sazināsimies ar jums.