Hur kopierar jag ett objekt i Java

Hur Kopierar Jag Ett Objekt I Java



I Java träder kopiering av ett objekt i kraft där det finns ett behov av att använda de redan implementerade funktionerna i koden istället för att applicera dem igen från början. Det är också till hjälp när det gäller att uppdatera data baserat på de inkluderade poster. På så sätt reducerar det kodkomplexiteten och utnyttjandet av resurserna effektivt.

Den här artikeln kommer att demonstrera metoderna för att kopiera ett objekt i Java.

Hur kopierar jag ett objekt i Java?

Ett objekt kan kopieras i Java med följande metoder:







Få tillgång till alla klasser inom ' java.util ”-paket innan du går vidare till exemplen:



importera java. util . *;

Metod 1: Kopiera ett objekt i Java med 'Copy Constructor'

den ' Kopiera konstruktör ” skapar/definierar ett objekt genom att referera till samma klassobjekt som skapats tidigare.



Exempel
Följande exempel tillämpar 'Copy Constructor' för att kopiera ett objekt:





offentlig klass CopyObject {
int id ;
Sträng stad ;
CopyObject ( int id , Sträng stad ) {
detta . id = id ;
detta . stad = stad ; }
CopyObject ( CopyObject-objekt ) {
detta . id = objekt. id ;
detta . stad = objekt. stad ; }
offentlig tomhet visa ( ) {
Systemet. ut . println ( 'ID ->' + detta . id ) ;
Systemet. ut . println ( 'Stad ->' + detta . stad ) ; }
offentlig statisk tomhet huvud ( Sträng [ ] args ) {
Skanneringång = ny Scanner ( Systemet. i ) ;
Systemet. ut . println ( 'Ange id:' ) ;
int id = inmatning. nästaInt ( ) ;
Systemet. ut . println ( 'Ange staden:' ) ;
Sträng stad = inmatning. Nästa ( ) ;
CopyObject objekt1 = ny CopyObject ( id , stad ) ;
CopyObject objekt2 = ny CopyObject ( objekt1 ) ;
Systemet. ut . println ( 'Standardobjekt ->' ) ;
objekt1. visa ( ) ;
Systemet. ut . println ( 'Kopierat objekt ->' ) ;
objekt2. visa ( ) ;
inmatning. stänga ( ) ;
} }

I kodavsnittet ovan:

  • Skapa en klass som heter ' CopyObject ”.
  • Ange de angivna medlemsvariablerna för klassen.
  • Därefter skapar du en parametriserad klasskonstruktor som allokerar de överförda värdena till de angivna variablerna via ' detta ”.
  • Skapa nu en ' Kopiera konstruktör ” som tar ett redan skapat objekt av klasstyp som sin parameter som kommer att skickas som ett argument senare.
  • Definiera också funktionen ' visa() ” som visar de passerade objektvärdena.
  • I ' main() '-metoden, skapa ett 'Scanner'-objekt för att tillåta användarinmatning via ' System.in ' parameter.
  • Koppla också till ' nextInt() ' och ' Nästa() ”-metoder för att ta heltals- och stränganvändarinmatningarna, respektive.
  • Skapa ett klassobjekt via ' ny ' nyckelord och ' CopyObject() ” konstruktor som har användarens inmatningsvärden som argument.
  • Skapa också ett kopieringsobjekt med det skapade objektet som argument för att returnera det kopierade innehållet genom att hänvisa till klassens kopieringskonstruktor.
  • Slutligen, åberopa ' visa() ”-funktion för att visa de passerade användarinmatningsvärdena och stänga “Skannern”.

Produktion



I denna utdata kan det antydas att ett kopieringsobjekt skapas och visas därefter.

Metod 2: Kopiera ett objekt i Java Via metoden 'clone()'.

den ' klona() ' metoden för ' java.lang.Object ” klass tar ett objekt som en parameter, skapar och ger en kopia av det. Denna metod kan implementeras för att kopiera ett objekt genom att referera till det redan skapade objektet (som måste kopieras) och metoden 'clone()'.

Syntax

objekt. klona ( )

Denna metod ger en kopia av objektet och kastar ' CloneNotSupportedException ' om objektets klass inte implementerar/tillämpar gränssnittet 'Klonbart'.

Exempel
Gå igenom nedanstående kodrader:

offentlig klass CopyObject redskap Klonbar {
int id ;
Sträng stad ;
CopyObject ( int id , Sträng stad ) {
detta . id = id ;
detta . stad = stad ;
}
offentlig tomhet visa ( ) {
Systemet. ut . println ( 'ID ->' + detta . id ) ;
Systemet. ut . println ( 'Stad ->' + detta . stad ) ;
}
offentlig statisk tomhet huvud ( Sträng [ ] args ) kastar CloneNotSupportedException {
Skanneringång = ny Scanner ( Systemet. i ) ;
Systemet. ut . println ( 'Ange id:' ) ;
int id = inmatning. nästaInt ( ) ;
Systemet. ut . println ( 'Ange staden:' ) ;
Sträng stad = inmatning. Nästa ( ) ;
CopyObject objekt1 = ny CopyObject ( id , stad ) ;
Systemet. ut . println ( 'Standardobjekt ->' ) ;
objekt1. visa ( ) ;
Systemet. ut . println ( 'Kopierat objekt ->' ) ;
CopyObject objekt2 = ( CopyObject ) objekt1. klona ( ) ;
objekt2. visa ( ) ;
inmatning. stänga ( ) ;
} }

Enligt ovanstående kodblock, utför nedanstående steg:

  • Kom ihåg de diskuterade tillvägagångssätten för att definiera en klass, specificera medlemsvariablerna, skapa en parametriserad klasskonstruktor (tilldela de godkända värdena) respektive definiera en funktion för att visa värdena.
  • Nu inne ' main() ”, på samma sätt matar användaren in värdena och skickar dessa värden till det skapade klassobjektet och visar dem via motsvarande funktion.
  • Efter det kommer ' klona() ”-metoden träder i kraft som är associerad med det redan skapade objektet för att skapa ett kopieringsobjekt.
  • Till sist, visa även det kopierade objektinnehållet via den diskuterade funktionen.

Produktion

I detta utfall kan det observeras att användarinmatningsvärdena returneras två gånger med identiska utfall, vilket säkerställer att klassobjektet kopieras på rätt sätt.

Slutsats

Ett objekt kan kopieras i Java med hjälp av ' Kopiera konstruktör ', eller den ' klona() 'metoden. Den tidigare metoden kopierar objektet genom att ta det redan skapade objektet som ett kopieringskonstruktorargument. Det senare tillvägagångssättet är direkt associerat med det skapade klassobjektet. Denna uppskrivning demonstrerade metoderna för att kopiera ett objekt i Java.