Hvordan kopierer jeg et objekt i Java

Hvordan Kopierer Jeg Et Objekt I Java



I Java trer kopiering av et objekt i kraft der det er behov for å bruke de allerede implementerte funksjonalitetene i koden i stedet for å bruke dem på nytt fra bunnen av. Det er også nyttig når det gjelder å oppdatere dataene basert på de inneholdte postene. På denne måten reduserer det kodekompleksiteten og utnyttelsen av ressursene effektivt.

Denne artikkelen vil demonstrere tilnærmingene til å kopiere et objekt i Java.

Hvordan kopierer jeg et objekt i Java?

Et objekt kan kopieres i Java ved å bruke følgende tilnærminger:







Få tilgang til alle klassene i ' java.util ”-pakken før du går til eksemplene:



import java. util . *;

Tilnærming 1: Kopiere et objekt i Java ved hjelp av 'Copy Constructor'

« Kopier Konstruktør ” oppretter/definerer et objekt ved å referere til det samme klasseobjektet som er opprettet tidligere.



Eksempel
Følgende eksempel bruker 'Copy Constructor' for å kopiere et objekt:





offentlig klasse CopyObject {
int id ;
String by ;
CopyObject ( int id , String by ) {
dette . id = id ;
dette . by = by ; }
CopyObject ( CopyObject-objekt ) {
dette . id = gjenstand. id ;
dette . by = gjenstand. by ; }
offentlig tomrom vise ( ) {
System. ute . println ( 'ID ->' + dette . id ) ;
System. ute . println ( 'By ->' + dette . by ) ; }
offentlig statisk tomrom hoved- ( String [ ] args ) {
Skannerinngang = ny Skanner ( System. i ) ;
System. ute . println ( 'Skriv inn id:' ) ;
int id = input. nesteInt ( ) ;
System. ute . println ( 'Angi byen:' ) ;
String by = input. neste ( ) ;
CopyObject-objekt1 = ny CopyObject ( id , by ) ;
CopyObject objekt2 = ny CopyObject ( objekt1 ) ;
System. ute . println ( 'Standardobjekt ->' ) ;
objekt1. vise ( ) ;
System. ute . println ( 'Kopiert objekt ->' ) ;
objekt2. vise ( ) ;
input. Lukk ( ) ;
} }

I kodebiten ovenfor:

  • Lag en klasse som heter ' CopyObject '.
  • Spesifiser de oppgitte medlemsvariablene for klassen.
  • Deretter oppretter du en parameterisert klassekonstruktør som allokerer de beståtte verdiene til de spesifiserte variablene via ' dette '.
  • Lag nå en ' Kopier Konstruktør ” som tar et allerede opprettet klassetypeobjekt som parameter som vil bli sendt som et argument senere.
  • Definer også funksjonen ' vise() ' som viser de beståtte objektverdiene.
  • I « hoved() '-metoden, lag et 'Scanner'-objekt for å tillate brukerinndata via ' System.in ' parameter.
  • Knytt også til ' nextInt() ' og ' neste() ”-metoder for å ta henholdsvis heltalls- og strengbrukerinndata.
  • Lag et klasseobjekt via ' ny ' nøkkelord og ' CopyObject() ” konstruktør som har brukerinndataverdier som argumenter.
  • Lag også et kopiobjekt med det opprettede objektet som argument for å returnere det kopierte innholdet ved å referere til klassekopikonstruktøren.
  • Til slutt, påkall ' vise() '-funksjon for å vise de beståtte brukerinndataverdiene og lukke 'Scanner'.

Produksjon



I denne utgangen kan det antydes at et kopiobjekt opprettes og vises deretter.

Tilnærming 2: Kopiere et objekt i Java via 'clone()'-metoden

« klone() ' metoden for ' java.lang.Object ” klasse tar et objekt som en parameter, lager og gir en kopi av det. Denne metoden kan implementeres for å kopiere et objekt ved å referere til det allerede opprettede objektet (som må kopieres) og 'clone()'-metoden.

Syntaks

gjenstand. klone ( )

Denne metoden gir en kopi av objektet og kaster ' CloneNotSupportedException ' hvis objektets klasse ikke implementerer/bruker 'Cloneable'-grensesnittet.

Eksempel
Gå gjennom kodelinjene nedenfor:

offentlig klasse CopyObject redskaper Klonbar {
int id ;
String by ;
CopyObject ( int id , String by ) {
dette . id = id ;
dette . by = by ;
}
offentlig tomrom vise ( ) {
System. ute . println ( 'ID ->' + dette . id ) ;
System. ute . println ( 'By ->' + dette . by ) ;
}
offentlig statisk tomrom hoved- ( String [ ] args ) kaster CloneNotSupportedException {
Skannerinngang = ny Skanner ( System. i ) ;
System. ute . println ( 'Skriv inn id:' ) ;
int id = input. nesteInt ( ) ;
System. ute . println ( 'Angi byen:' ) ;
String by = input. neste ( ) ;
CopyObject-objekt1 = ny CopyObject ( id , by ) ;
System. ute . println ( 'Standardobjekt ->' ) ;
objekt1. vise ( ) ;
System. ute . println ( 'Kopiert objekt ->' ) ;
CopyObject objekt2 = ( CopyObject ) objekt1. klone ( ) ;
objekt2. vise ( ) ;
input. Lukk ( ) ;
} }

I henhold til kodeblokken ovenfor, utfør trinnene nedenfor:

  • Husk de diskuterte tilnærmingene for henholdsvis å definere en klasse, spesifisere medlemsvariablene, lage en parameterisert klassekonstruktør (allokere de beståtte verdiene) og definere en funksjon for å vise verdiene.
  • Nå i ' hoved() ”, på samme måte legger brukeren inn verdiene og sender disse verdiene til det opprettede klasseobjektet og viser dem via den tilsvarende funksjonen.
  • Etter det, ' klone() ”-metoden trer i kraft som er knyttet til det allerede opprettede objektet for å lage et kopiobjekt.
  • Til slutt, vis også det kopierte objektinnholdet via den omtalte funksjonen.

Produksjon

I dette utfallet kan det observeres at brukerinndataverdiene returneres to ganger med identiske utfall, noe som sikrer at klasseobjektet kopieres riktig.

Konklusjon

Et objekt kan kopieres i Java ved å bruke ' Kopier Konstruktør ', eller ' klone() 'metoden. Den tidligere tilnærmingen kopierer objektet ved å ta det allerede opprettede objektet som et kopikonstruktørargument. Sistnevnte tilnærming er assosiert direkte med det opprettede klasseobjektet. Denne oppskriften demonstrerte tilnærmingene til å kopiere et objekt i Java.