Hoe kopieer ik een object in Java

Hoe Kopieer Ik Een Object In Java



In Java wordt het kopiëren van een object van kracht wanneer het nodig is om de reeds geïmplementeerde functionaliteiten in de code te gebruiken in plaats van ze opnieuw vanaf nul toe te passen. Het is ook nuttig als het gaat om het bijwerken van de gegevens op basis van de opgenomen records. Op deze manier vermindert het de codecomplexiteit en het effectief gebruik van de bronnen.

Dit artikel demonstreert de benaderingen voor het kopiëren van een object in Java.

Hoe kopieer ik een object in Java?

Een object kan in Java op de volgende manieren worden gekopieerd:







Toegang tot alle lessen binnen de “ java.util ”-pakket voordat u naar de voorbeelden gaat:



importeren Java. gebruiken . *;

Benadering 1: een object in Java kopiëren met 'Copy Constructor'

De ' Constructeur kopiëren ” Creëert/definieert een object door te verwijzen naar hetzelfde klasseobject dat eerder is gemaakt.



Voorbeeld
In het volgende voorbeeld wordt de 'Copy Constructor' toegepast om een ​​object te kopiëren:





openbaar klas CopyObject {
int ID kaart ;
Snaar stad ;
CopyObject ( int ID kaart , Snaar stad ) {
dit . ID kaart = ID kaart ;
dit . stad = stad ; }
CopyObject ( CopyObject-object ) {
dit . ID kaart = voorwerp. ID kaart ;
dit . stad = voorwerp. stad ; }
openbaar leegte weergave ( ) {
Systeem. uit . println ( 'ID ->' + dit . ID kaart ) ;
Systeem. uit . println ( 'Stad ->' + dit . stad ) ; }
openbaar statisch leegte voornaamst ( Snaar [ ] argumenten ) {
Scannerinvoer = nieuw Scanner ( Systeem. in ) ;
Systeem. uit . println ( 'Voer het ID in: ' ) ;
int ID kaart = invoer. volgendeInt ( ) ;
Systeem. uit . println ( 'Voer de stad in: ' ) ;
Snaar stad = invoer. volgende ( ) ;
CopyObject-object1 = nieuw CopyObject ( ID kaart , stad ) ;
CopyObject-object2 = nieuw CopyObject ( voorwerp1 ) ;
Systeem. uit . println ( 'Standaardobject ->' ) ;
voorwerp1. weergave ( ) ;
Systeem. uit . println ( 'Gekopieerd object ->' ) ;
voorwerp2. weergave ( ) ;
invoer. dichtbij ( ) ;
} }

In het bovenstaande codefragment:

  • Maak een klasse met de naam ' CopyObject ”.
  • Geef de opgegeven lidvariabelen van de klasse op.
  • Maak daarna een geparametriseerde klassenconstructor die de doorgegeven waarden toewijst aan de gespecificeerde variabelen via ' dit ”.
  • Maak nu een ' Constructeur kopiëren ” dat een reeds gemaakt object van het klassetype als parameter neemt die later als argument zal worden doorgegeven.
  • Definieer ook de functie ' weergave() ” dat de doorgegeven objectwaarden weergeeft.
  • In de ' voornaamst() ', maakt u een 'Scanner'-object om invoer door de gebruiker mogelijk te maken via de ' Systeem.in ' parameter.
  • Koppel ook de ' volgendeInt() ' En ' volgende() '-methoden om respectievelijk de integer- en stringgebruikersinvoer te gebruiken.
  • Maak een klasse-object via de ' nieuw ' trefwoord en de ' Object kopiëren() ” constructor met de invoerwaarden van de gebruiker als argumenten.
  • Maak ook een kopieerobject met het gemaakte object als argument om de gekopieerde inhoud te retourneren door te verwijzen naar de klassenkopieconstructor.
  • Roep ten slotte de ' weergave() '-functie om de doorgegeven gebruikersinvoerwaarden weer te geven en de 'Scanner' te sluiten.

Uitgang



In deze uitvoer kan worden geïmpliceerd dat een kopieerobject wordt gemaakt en dienovereenkomstig wordt weergegeven.

Benadering 2: een object in Java kopiëren via de 'clone()'-methode

De ' kloon() ” methode van de “ java.lang.Object ” class neemt een object als parameter, maakt en geeft er een kopie van. Deze methode kan worden geïmplementeerd om een ​​object te kopiëren door te verwijzen naar het reeds gemaakte object (dat moet worden gekopieerd) en de methode 'clone()'.

Syntaxis

voorwerp. kloon ( )

Deze methode geeft een kopie van het object en gooit ' CloneNotSupportedException ” als de klasse van het object de interface 'Kloonbaar' niet implementeert/toepast.

Voorbeeld
Doorloop de onderstaande regels code:

openbaar klas CopyObject implementeert Kloonbaar {
int ID kaart ;
Snaar stad ;
CopyObject ( int ID kaart , Snaar stad ) {
dit . ID kaart = ID kaart ;
dit . stad = stad ;
}
openbaar leegte weergave ( ) {
Systeem. uit . println ( 'ID ->' + dit . ID kaart ) ;
Systeem. uit . println ( 'Stad ->' + dit . stad ) ;
}
openbaar statisch leegte voornaamst ( Snaar [ ] argumenten ) gooit CloneNotSupportedException {
Scannerinvoer = nieuw Scanner ( Systeem. in ) ;
Systeem. uit . println ( 'Voer het ID in: ' ) ;
int ID kaart = invoer. volgendeInt ( ) ;
Systeem. uit . println ( 'Voer de stad in: ' ) ;
Snaar stad = invoer. volgende ( ) ;
CopyObject-object1 = nieuw CopyObject ( ID kaart , stad ) ;
Systeem. uit . println ( 'Standaardobject ->' ) ;
voorwerp1. weergave ( ) ;
Systeem. uit . println ( 'Gekopieerd object ->' ) ;
CopyObject-object2 = ( CopyObject ) voorwerp1. kloon ( ) ;
voorwerp2. weergave ( ) ;
invoer. dichtbij ( ) ;
} }

Voer volgens het bovenstaande codeblok de onderstaande stappen uit:

  • Denk aan de besproken benaderingen voor het definiëren van een klasse, het specificeren van de lidvariabelen, het maken van een geparametriseerde klassenconstructor (toewijzen van de doorgegeven waarden) en het definiëren van een functie voor het weergeven van de waarden.
  • Nu in ' voornaamst() ”, op dezelfde manier voert de gebruiker de waarden in en geeft deze waarden door aan het gemaakte klasseobject en geeft ze weer via de bijbehorende functie.
  • Daarna is de “ kloon() ” wordt de methode van kracht die is gekoppeld aan het reeds gemaakte object om een ​​kopieerobject te maken.
  • Geef ten slotte ook de gekopieerde objectinhoud weer via de besproken functie.

Uitgang

In dit resultaat kan worden waargenomen dat de invoerwaarden van de gebruiker twee keer worden geretourneerd met identieke resultaten, zodat het klassenobject op de juiste manier wordt gekopieerd.

Conclusie

Een object kan in Java worden gekopieerd met behulp van de ' Constructeur kopiëren ', of de ' kloon() ” methode. De eerstgenoemde benadering kopieert het object door het reeds gemaakte object als argument voor de constructor te gebruiken. De laatste benadering is rechtstreeks gekoppeld aan het gemaakte klasseobject. Dit artikel demonstreerde de benaderingen om een ​​object in Java te kopiëren.