Počas programovania sa často stretávame so scenármi, kedy je potrebné znova použiť celý kúsok kódu. Prepísanie kódu spôsobí, že program bude objemný, a to pri súčasnom znížení efektívnosti programu. Java nám teda poskytuje vynikajúcu vlastnosť, ktorá zachraňuje túto ťažkú úlohu. Toto je známe ako klonovanie v Jave a prostredníctvom tohto článku vám poskytnem úplné informácie.
Ďalej uvádzam témy, ktorým sa budem v tomto článku venovať:
Klonovanie v Jave
Klonovanie objektov v prostredí Java je proces vytvárania presnej kópie pôvodného objektu. Inými slovami, ide o spôsob vytvorenia nového objektu kopírovaním všetkých údajov a atribútov z pôvodného objektu. To je možné iba implementáciou metódy clone () metódy java.lang.Object trieda. Metóda klonovania vytvorí presnú kópiu objektu, pre ktorý bolavyvolané v poradí priradenia pole po poli a vráti odkaz na nový objekt . Jedna vec, ktorú si musíte pamätať, je, že v Jave môžu objekty, ktoré implementujú rozhranie klonu, ktoré je rozhraním značiek, používať clone ().
čo znamená menný priestor v c ++
Teraz, keď ste si vedomí toho, čo sa klonuje v prostredí Java, sa pozrime na rôzne výhody používania tejto funkcie.
Výhody klonovania v Jave
Ďalej uvádzam niekoľko najzaujímavejších funkcií používania klonovania v Jave.
- Pomáha pri zmenšovaní riadkov kódu.
- Najefektívnejší a najefektívnejší spôsob kopírovaniapredmety.
- Clone () sa tiež považuje za najrýchlejšiu metódu kopírovania poľa.
Poznámka: Používanie klonovania môže mať za následok určité problémy s dizajnom, ale ak ho použijete správnym strategickým spôsobom, môže vám to prospieť.
Typy klonovania v Jave
Klonovanie v Jave je možné zoskupiťdo dvoch kategórií:
- Plytké klonovanie
- Hlboké klonovanie
Poďme rozumieť každému z nich jeden po druhom.
Plytké klonovanie
Keď sa v Jave proces klonovania uskutočňuje vyvolaním metódy clone (), nazýva sa to Plytké klonovanie. Je to predvolený klonovací proces v Jave, kde sa vytvorí plytká kópia pôvodného objektu s presným poľom. V prípade, že má pôvodný objekt odkazy na niektoré ďalšie objekty ako polia, budú klonované iba odkazy tohto objektu namiesto vytvorenia nového objektu. Inými slovami, ak zmeníte hodnotu klonovaných objektov, prejaví sa to aj v origináli. Plytké klonovanie teda závisí od pôvodného objektu.
Ďalej uvádzam príklad toho istého:
balíček edureka trieda EduCourse {Kurz reťazca1 Kurz reťazca2 Kurz reťazca3 verejné EduCourse (reťazec crs1, reťazec crs2, reťazec crs3) {this.course1 = crs1 this.course2 = crs2 this.course3 = crs3}} trieda EduLearner implementuje Cloneable {int eduId String LearnerName EduCourse eduCourse public EduLearner (int eduId, String LearnerName, EduCourse eduCourse) {this.eduId = eduId this.learnerName = LearnerName this.eduCourse = eduCourse} // Predvolená verzia metódy Clone () chránená metódou Object Clone () vyvolá CloneNotSupportedException {return .clone ()}} verejná trieda ShallowCloneSample {public static void main (String [] args) {EduCourse j2ee = new EduCourse ('Java', 'Spring', 'Microservices') EduLearner learnner1 = new EduLearner (2811, 'Max' , j2ee) EduLearner Learner2 = nulový pokus {// Vytvorenie klonu Learner1 a jeho priradenie k Learner2 Learner2 = (EduLearner) Learner1.clone ()} catch (CloneNotSupportedException e) {e.printStackTrace ()} // Tlač podrobností Learner1 System.out.p rintln ('Details of Learner 2:') System.out.println ('Id:' + learnner1.eduId) System.out.println ('Name:' + learnner1.learnerName) System.out.println ('Id kurzu: '+ Learner1.eduCourse) // Tlač všetkých kurzov' Learner1 'System.out.println (' Courses of Learner 1: ') System.out.println (Learner1.eduCourse.course1) System.out.println (Learner1. eduCourse.course2) System.out.println (learnner1.eduCourse.course3) // Tlač detailov Learner2 System.out.println ('Podrobnosti o Learner 2:') System.out.println ('Id:' + learnner2.eduId ) System.out.println ('Názov:' + learnner2.learnerName) System.out.println ('ID kurzu:' + learnner2.eduCourse) // Tlač všetkých kurzov systému 'learnner2' System.out.println ('Kurzy) of Learner 2: ') System.out.println (learnner2.eduCourse.course1) System.out.println (learnner2.eduCourse.course2) System.out.println (learnner2.eduCourse.course3) // Zmena kurzu3' Learner2 'learnner2.eduCourse.course3 =' JSP '// Táto zmena sa prejaví v pôvodnom' learnner1 'System.out.println (' Aktualizované kurzy Learner 2: ') System.out.println (Learner1.eduCourse.course1) System.out.println (Learner1.eduCourse.course2) System.out.println (Learner1.eduCourse.course3)}}
Výkon:
Podrobnosti o Learner 2: Id: 2811 Názov: Max ID kurzu: EduCourse @ 15db9742 Kurzy Learner 1: Java Spring Microservices Podrobnosti o Learner 2: Id: 2811 Názov: Max ID kurzu: EduCourse @ 15db9742 Kurzy Learner 2: Java Spring Microservices Aktualizované kurzy Learner 2: Java Spring JSP
Hlboké klonovanie v Jave
Keď sa v Jave proces klonovania vykonáva implementáciou klonovateľného rozhrania, nazýva sa to Deep Cloning. Pri tomto type klonovania sa vytvorí presná kópia všetkých polí pôvodného objektu. Ale v prípade, že má pôvodný objekt odkazy na iné objekty ako polia, potom sa kópia týchto objektov vytvorí tiež volaním metódy clone (). Vďaka tomu bude klonovaný objekt nezávislý od pôvodného objektu a všetky zmeny vykonané v ktoromkoľvek z objektov sa na druhom neprejavia.
java kód na ukončenie programu
Ďalej uvádzam príklad toho istého:
balík edureka class EduCourse implementuje Cloneable {String Course1 String Course2 String Course3 public EduCourse (String crs1, String crs2, String crs3) {this.course1 = crs1 this.course2 = crs2 this.course3 = crs3} chránený klon objektu () hodí CloneNotSupportedException návrat super.clone ()}} trieda EduLearner implementuje Cloneable {int eduId String LearnerName EduCourse eduCourse public EduLearner (int eduId, String LearnerName, EduCourse eduCourse) {this.eduId = eduId this.learnerName = learnnerName this.eduCourse} eduCourse} eduCourse} Prepísanie metódy clone () na vytvorenie hlbokej kópie objektu chráneného objektom clone () vyvolá CloneNotSupportedException {EduLearner Learner = (EduLearner) super.clone () learnner.eduCourse = (EduCourse) eduCourse.clone () návratový študent}} verejnej triedy DeepCloneSample {public static void main (String [] args) {EduCourse j2ee = new EduCourse ('Java', 'Spring', 'Microservices') EduLearner learnner1 = new EduLearner (2811, 'Max', j2ee) EduLearner learn er2 = nulový pokus {// Vytvorenie klonu Learner1 a jeho priradenie k Learner2 Learner2 = (EduLearner) Learner1.clone ()} catch (CloneNotSupportedException e) {e.printStackTrace ()} // Tlač podrobností systému Learner1 System.out. println ('Podrobnosti o študentovi 2:') System.out.println ('Id:' + learnner1.eduId) System.out.println ('Meno:' + learnner1.learnerName) System.out.println ('Id kurzu: '+ Learner1.eduCourse) // Tlač všetkých kurzov' Learner1 'System.out.println (' Courses of Learner 1: ') System.out.println (Learner1.eduCourse.course1) System.out.println (Learner1. eduCourse.course2) System.out.println (learnner1.eduCourse.course3) // Tlač detailov Learner2 System.out.println ('Podrobnosti o Learner 2:') System.out.println ('Id:' + learnner2.eduId ) System.out.println ('Názov:' + learnner2.learnerName) System.out.println ('ID kurzu:' + learnner2.eduCourse) // Tlač všetkých kurzov systému 'learnner2' System.out.println ('Kurzy) of Learner 2: ') System.out.println (learnner2.eduCourse.course1) System.out.printl n (learnner2.eduCourse.course2) System.out.println (learnner2.eduCourse.course3) // Zmena kurzu 3 'learnner2' learnner2.eduCourse.course3 = 'JSP' // Táto zmena sa neprejaví v origináli ' Learner1 'System.out.println (' Courses of Learner 1: ') System.out.println (Learner1.eduCourse.course1) System.out.println (Learner1.eduCourse.course2) System.out.println (Learner1.eduCourse. course3) // Aktualizované kurzy Learner2 System.out.println ('Courses of Learner 2:') System.out.println (Learner2.eduCourse.course1) System.out.println (learnner2.eduCourse.course2) System.out. println (learnner2.eduCourse.course3)}}
Výkon:
Podrobnosti o študentovi 2: Id: 2811 Názov: Max ID kurzu: edureka.EduCourse@15db9742 Kurzy študenta 1: Jarné mikroslužby Java Podrobnosti o študentovi 2: Id: 2811 Názov: Max ID kurzu: edureka.EduCourse@6d06d69c Kurzy študenta 2 : Kurzy učiteľa mikroskopických služieb Java Spring 1: Kurzy učiteľa mikroskopických služieb Java Spring 2: Java Spring JSP
Týmto sa dostávame na koniec tohto článku o klonovaní v Jave. Ak sa chcete dozvedieť viac informácií o prostredí Java, môžete sa obrátiť na našu stránku .
prepojený zoznam v programe c
Teraz, keď ste pochopili, čo je klonovanie v Jave, pozrite sa na autor: Edureka, dôveryhodná online vzdelávacia spoločnosť so sieťou viac ako 250 000 spokojných študentov rozmiestnených po celom svete. Výcvikový a certifikačný kurz Edureka Java J2EE a SOA je určený pre študentov a profesionálov, ktorí chcú byť vývojármi Java. Kurz je navrhnutý tak, aby vám dal náskok v programovaní v Jave a naučil vás základné aj pokročilé koncepty Javy spolu s rôznymi rámcami Java, ako je Hibernate & Spring.
Máte na nás otázku? Uveďte to prosím v sekcii komentárov v tomto článku „Klonovanie v Jave“ a my sa vám ozveme čo najskôr.