Cum copiez un obiect în Java

Cum Copiez Un Obiect In Java



În Java, copierea unui obiect intră în vigoare acolo unde este nevoie să se utilizeze funcționalitățile deja implementate în cod, în loc să le aplice din nou de la zero. De asemenea, este de ajutor atunci când vine vorba de actualizarea datelor pe baza înregistrărilor conținute. În acest fel, reduce complexitatea codului și utilizarea resurselor în mod eficient.

Acest articol va demonstra abordările pentru copierea unui obiect în Java.

Cum copiez un obiect în Java?

Un obiect poate fi copiat în Java folosind următoarele abordări:







Accesați toate clasele din cadrul „ java.util ” pachet înainte de a trece la exemple:



import java. util . *;

Abordarea 1: Copierea unui obiect în Java folosind „Copy Constructor”

Copie constructor ” creează/definește un obiect prin referire la același obiect de clasă creat anterior.



Exemplu
Următorul exemplu aplică „Copy Constructor” pentru a copia un obiect:





public clasă CopyObject {
int id ;
Şir oraș ;
CopyObject ( int id , Şir oraș ) {
acest . id = id ;
acest . oraș = oraș ; }
CopyObject ( obiect CopyObject ) {
acest . id = obiect. id ;
acest . oraș = obiect. oraș ; }
public gol afişa ( ) {
Sistem. afară . println ( „ID ->” + acest . id ) ;
Sistem. afară . println ( 'Oraș ->' + acest . oraș ) ; }
public static gol principal ( Şir [ ] argumente ) {
Intrare scaner = nou Scanner ( Sistem. în ) ;
Sistem. afară . println ( 'Introduceți id-ul: ' ) ;
int id = intrare. următorInt ( ) ;
Sistem. afară . println ( 'Intra in oras:' ) ;
Şir oraș = intrare. Următorul ( ) ;
CopyObject obiect1 = nou CopyObject ( id , oraș ) ;
CopyObject obiect2 = nou CopyObject ( obiect1 ) ;
Sistem. afară . println ( „Obiect implicit ->” ) ;
obiect1. afişa ( ) ;
Sistem. afară . println ( „Obiect copiat ->” ) ;
obiect2. afişa ( ) ;
intrare. închide ( ) ;
} }

În fragmentul de cod de mai sus:

  • Creați o clasă numită „ CopyObject ”.
  • Specificați variabilele membre ale clasei.
  • După aceea, creați un constructor de clasă parametrizată care alocă valorile transmise variabilelor specificate prin „ acest ”.
  • Acum, creați un „ Copie constructor ” care ia ca parametru un obiect de tip clasă deja creat, care va fi transmis ca argument mai târziu.
  • De asemenea, definiți funcția „ afişa() ” care afișează valorile obiectelor transmise.
  • În ' principal() ”, creați un obiect „Scanner” pentru a permite introducerea utilizatorului prin intermediul „ System.in ” parametru.
  • De asemenea, asociați „ nextInt() ' și ' Următorul() ” pentru a prelua intrările utilizatorului întreg și respectiv șir.
  • Creați un obiect de clasă prin intermediul „ nou „, cuvântul cheie și „ CopyObject() ” constructor având ca argumente valorile introduse de utilizator.
  • De asemenea, creați un obiect de copiere având ca argument obiectul creat pentru a returna conținutul copiat, făcând referire la constructorul de copiere a clasei.
  • În cele din urmă, invocați „ afişa() ” pentru a afișa valorile introduse de utilizator și pentru a închide „Scanerul”.

Ieșire



În această ieșire, se poate presupune că un obiect de copiere este creat și afișat în consecință.

Abordarea 2: Copierea unui obiect în Java prin metoda „clone()”.

clona() ” metoda “ java.lang.Object ” clasa ia un obiect ca parametru, creează și oferă o copie a acestuia. Această metodă poate fi implementată pentru a copia un obiect făcând referire la obiectul deja creat (care trebuie copiat) și la metoda „clone()”.

Sintaxă

obiect. clonare ( )

Această metodă oferă o copie a obiectului și aruncă „ CloneNotSupportedException ” dacă clasa obiectului nu implementează/aplică interfața „Cloneable”.

Exemplu
Parcurgeți rândurile de cod de mai jos:

public clasă CopyObject unelte Clonabil {
int id ;
Şir oraș ;
CopyObject ( int id , Şir oraș ) {
acest . id = id ;
acest . oraș = oraș ;
}
public gol afişa ( ) {
Sistem. afară . println ( „ID ->” + acest . id ) ;
Sistem. afară . println ( 'Oraș ->' + acest . oraș ) ;
}
public static gol principal ( Şir [ ] argumente ) aruncări CloneNotSupportedException {
Intrare scaner = nou Scanner ( Sistem. în ) ;
Sistem. afară . println ( 'Introduceți id-ul: ' ) ;
int id = intrare. următorInt ( ) ;
Sistem. afară . println ( 'Intra in oras:' ) ;
Şir oraș = intrare. Următorul ( ) ;
CopyObject obiect1 = nou CopyObject ( id , oraș ) ;
Sistem. afară . println ( „Obiect implicit ->” ) ;
obiect1. afişa ( ) ;
Sistem. afară . println ( „Obiect copiat ->” ) ;
CopyObject obiect2 = ( CopyObject ) obiect1. clonare ( ) ;
obiect2. afişa ( ) ;
intrare. închide ( ) ;
} }

Conform blocului de cod de mai sus, efectuați pașii de mai jos:

  • Reamintim abordările discutate pentru definirea unei clase, specificarea variabilelor membre, crearea unui constructor de clasă parametrizată (alocarea valorilor transmise) și, respectiv, definirea unei funcții pentru afișarea valorilor.
  • Acum in ' principal() ”, în mod similar, utilizatorul introduce valorile și transmite aceste valori obiectului de clasă creat și le afișează prin intermediul funcției corespunzătoare.
  • După aceea, „ clona() ” intră în vigoare metoda care este asociată cu obiectul deja creat pentru a crea un obiect de copiere.
  • În cele din urmă, afișați conținutul obiectului copiat și prin intermediul funcției discutate.

Ieșire

În acest rezultat, se poate observa că valorile introduse de utilizator sunt returnate de două ori cu rezultate identice, asigurându-se că obiectul de clasă este copiat corespunzător.

Concluzie

Un obiect poate fi copiat în Java utilizând „ Copie constructor ', sau ' clona() ” metoda. Prima abordare copiază obiectul luând obiectul deja creat ca argument constructor de copiere. Ultima abordare este asociată direct cu obiectul de clasă creat. Acest articol a demonstrat abordările pentru a copia un obiect în Java.