Ako skopírovať objekt v jazyku Java

Ako Skopirovat Objekt V Jazyku Java



V Jave sa kopírovanie objektu prejaví tam, kde je potrebné využiť už implementované funkcie v kóde namiesto toho, aby ste ich znova aplikovali od začiatku. Je tiež nápomocný, pokiaľ ide o aktualizáciu údajov na základe obsiahnutých záznamov. Týmto spôsobom znižuje zložitosť kódu a efektívne využitie zdrojov.

Tento článok demonštruje prístupy ku kopírovaniu objektu v jazyku Java.

Ako skopírujem objekt v jazyku Java?

Objekt je možné skopírovať v jazyku Java pomocou nasledujúcich prístupov:







Prístup ku všetkým triedam v rámci „ java.util ” balík pred prechodom na príklady:



importovať java. util . *;

Prístup 1: Kopírovanie objektu v jazyku Java pomocou nástroja „Copy Constructor“

' Kopírovať konštruktor ” vytvorí/definuje objekt odkazom na rovnaký objekt triedy, ktorý bol vytvorený predtým.



Príklad
V nasledujúcom príklade sa používa „kopírovať konštruktor“ na kopírovanie objektu:





verejnosti trieda CopyObject {
int id ;
Reťazec mesto ;
CopyObject ( int id , Reťazec mesto ) {
toto . id = id ;
toto . mesto = mesto ; }
CopyObject ( CopyObject objekt ) {
toto . id = objekt. id ;
toto . mesto = objekt. mesto ; }
verejnosti neplatné displej ( ) {
Systém. von . println ( 'ID ->' + toto . id ) ;
Systém. von . println ( 'Mesto ->' + toto . mesto ) ; }
verejnosti statické neplatné Hlavná ( Reťazec [ ] args ) {
Vstup skenera = Nový Skener ( Systém. v ) ;
Systém. von . println ( 'Zadajte ID:' ) ;
int id = vstup. nextInt ( ) ;
Systém. von . println ( 'Vstúpte do mesta:' ) ;
Reťazec mesto = vstup. Ďalšie ( ) ;
CopyObject object1 = Nový CopyObject ( id , mesto ) ;
CopyObject object2 = Nový CopyObject ( objekt1 ) ;
Systém. von . println ( 'Predvolený objekt ->' ) ;
objekt1. displej ( ) ;
Systém. von . println ( 'Skopírovaný objekt ->' ) ;
objekt2. displej ( ) ;
vstup. Zavrieť ( ) ;
} }

Vo vyššie uvedenom útržku kódu:

  • Vytvorte triedu s názvom „ CopyObject “.
  • Zadajte uvedené členské premenné triedy.
  • Potom vytvorte parametrizovaný konštruktor triedy, ktorý pridelí odovzdané hodnoty zadaným premenným prostredníctvom „ toto “.
  • Teraz vytvorte „ Kopírovať konštruktor ”, ktorý berie už vytvorený objekt typu triedy ako svoj parameter, ktorý sa neskôr odovzdá ako argument.
  • Definujte tiež funkciu „ zobraziť() ”, ktorý zobrazuje hodnoty odovzdaných objektov.
  • V ' Hlavná() “, vytvorte objekt „Skener“, ktorý umožní vstup používateľovi cez „ System.in parameter “.
  • Pripojte tiež „ nextInt() “ a „ Ďalšie() ” metódy na prevzatie celočíselných a reťazcových vstupov používateľa.
  • Vytvorte objekt triedy cez „ Nový kľúčové slovo a CopyObject() ” konštruktor, ktorý má ako argumenty vstupné hodnoty používateľa.
  • Vytvorte tiež objekt kópie s vytvoreným objektom ako argumentom na vrátenie skopírovaného obsahu odkazom na konštruktor kópie triedy.
  • Nakoniec vyvolajte „ zobraziť() “, aby sa zobrazili zadané používateľské hodnoty a zatvoril sa „Skener“.

Výkon



V tomto výstupe možno predpokladať, že sa vytvorí a zobrazí kópia objektu.

Prístup 2: Kopírovanie objektu v jazyku Java pomocou metódy „clone()“.

' klon() “metóda “ java.lang.Object ” trieda berie objekt ako parameter, vytvára a dáva jeho kópiu. Táto metóda môže byť implementovaná na kopírovanie objektu odkazom na už vytvorený objekt (ktorý je potrebné skopírovať) a metódu „clone()“.

Syntax

objekt. klonovať ( )

Táto metóda poskytne kópiu objektu a vyvolá „ CloneNotSupportedException “, ak trieda objektu neimplementuje/neaplikuje rozhranie „Cloneable“.

Príklad
Prejdite si nižšie uvedené riadky kódu:

verejnosti trieda CopyObject náradia Klonovateľné {
int id ;
Reťazec mesto ;
CopyObject ( int id , Reťazec mesto ) {
toto . id = id ;
toto . mesto = mesto ;
}
verejnosti neplatné displej ( ) {
Systém. von . println ( 'ID ->' + toto . id ) ;
Systém. von . println ( 'Mesto ->' + toto . mesto ) ;
}
verejnosti statické neplatné Hlavná ( Reťazec [ ] args ) hádže CloneNotSupportedException {
Vstup skenera = Nový Skener ( Systém. v ) ;
Systém. von . println ( 'Zadajte ID:' ) ;
int id = vstup. nextInt ( ) ;
Systém. von . println ( 'Vstúpte do mesta:' ) ;
Reťazec mesto = vstup. Ďalšie ( ) ;
CopyObject object1 = Nový CopyObject ( id , mesto ) ;
Systém. von . println ( 'Predvolený objekt ->' ) ;
objekt1. displej ( ) ;
Systém. von . println ( 'Skopírovaný objekt ->' ) ;
CopyObject object2 = ( CopyObject ) objekt1. klonovať ( ) ;
objekt2. displej ( ) ;
vstup. Zavrieť ( ) ;
} }

Podľa vyššie uvedeného bloku kódu vykonajte kroky uvedené nižšie:

  • Pripomeňme si diskutované prístupy k definovaniu triedy, špecifikácii členských premenných, vytvoreniu parametrizovaného konštruktora triedy (alokácia odovzdaných hodnôt) a definovaniu funkcie na zobrazenie hodnôt, resp.
  • Teraz v ' Hlavná() “, podobne používateľ zadá hodnoty a odovzdá tieto hodnoty vytvorenému objektu triedy a zobrazí ich pomocou príslušnej funkcie.
  • Potom sa „ klon() “, ktorá je spojená s už vytvoreným objektom na vytvorenie kopírovaného objektu.
  • Nakoniec pomocou diskutovanej funkcie zobrazte aj obsah skopírovaného objektu.

Výkon

V tomto výsledku je možné pozorovať, že vstupné hodnoty používateľa sú vrátené dvakrát s identickými výsledkami, čím sa zabezpečí, že sa objekt triedy vhodne skopíruje.

Záver

Objekt je možné skopírovať v jazyku Java pomocou „ Kopírovať konštruktor ', alebo ' klon() “. Prvý prístup kopíruje objekt tak, že už vytvorený objekt berie ako argument konštruktora kopírovania. Posledný prístup je spojený priamo s vytvoreným objektom triedy. Tento zápis demonštroval prístupy ku kopírovaniu objektu v jazyku Java.