Come copiare un oggetto in Java

Come Copiare Un Oggetto In Java



In Java, la copia di un oggetto entra in vigore dove c'è la necessità di utilizzare le funzionalità già implementate nel codice invece di applicarle nuovamente da zero. Inoltre, è di aiuto quando si tratta di aggiornare i dati in base ai record contenuti. In questo modo, riduce efficacemente la complessità del codice e l'utilizzo delle risorse.

Questo articolo dimostrerà gli approcci alla copia di un oggetto in Java.

Come posso copiare un oggetto in Java?

Un oggetto può essere copiato in Java utilizzando i seguenti approcci:







Accedi a tutte le classi all'interno del “ java.util ” pacchetto prima di passare agli esempi:



importare Giava. utile . *;

Approccio 1: copiare un oggetto in Java utilizzando 'Copy Constructor'

IL ' Costruttore di copie ” crea/definisce un oggetto facendo riferimento allo stesso oggetto di classe creato in precedenza.



Esempio
L'esempio seguente applica il 'Copy Constructor' per copiare un oggetto:





pubblico classe CopiaOggetto {
int id ;
Corda città ;
CopiaOggetto ( int id , Corda città ) {
Questo . id = id ;
Questo . città = città ; }
CopiaOggetto ( Oggetto CopyObject ) {
Questo . id = oggetto. id ;
Questo . città = oggetto. città ; }
pubblico vuoto Schermo ( ) {
Sistema. fuori . println ( 'ID ->' + Questo . id ) ;
Sistema. fuori . println ( 'Città ->' + Questo . città ) ; }
pubblico statico vuoto principale ( Corda [ ] arg ) {
Ingresso dello scanner = nuovo Scanner ( Sistema. In ) ;
Sistema. fuori . println ( 'Inserisci l'ID: ' ) ;
int id = ingresso. successivoInt ( ) ;
Sistema. fuori . println ( 'Inserisci la città: ' ) ;
Corda città = ingresso. Prossimo ( ) ;
Oggetto CopyObject1 = nuovo CopiaOggetto ( id , città ) ;
Oggetto CopyObject2 = nuovo CopiaOggetto ( oggetto1 ) ;
Sistema. fuori . println ( 'Oggetto predefinito ->' ) ;
oggetto1. Schermo ( ) ;
Sistema. fuori . println ( 'Oggetto copiato ->' ) ;
oggetto2. Schermo ( ) ;
ingresso. vicino ( ) ;
} }

Nello snippet di codice sopra:

  • Crea una classe chiamata ' CopiaOggetto ”.
  • Specificare le variabili membro dichiarate della classe.
  • Successivamente, crea un costruttore di classi parametrizzato che allochi i valori passati alle variabili specificate tramite ' Questo ”.
  • Ora, crea un ' Costruttore di copie ” che accetta come parametro un oggetto di tipo classe già creato che verrà passato come argomento in seguito.
  • Inoltre, definisci la funzione ' Schermo() ” che visualizza i valori dell'oggetto passato.
  • Nel ' principale() ', creare un oggetto 'Scanner' per consentire l'input dell'utente tramite il metodo ' Sistema.in parametro '.
  • Inoltre, associa il ' successivoInt() ' E ' Prossimo() ” per prendere rispettivamente gli input dell'utente intero e stringa.
  • Crea un oggetto di classe tramite il ' nuovo ” parola chiave e “ CopiaOggetto() ” costruttore con i valori di input dell'utente come argomenti.
  • Inoltre, crea un oggetto copia con l'oggetto creato come argomento per restituire il contenuto copiato facendo riferimento al costruttore di copie di classe.
  • Infine, invocare il ' Schermo() ” per visualizzare i valori immessi dall'utente e chiudere lo “Scanner”.

Produzione



In questo output, può essere implicito che un oggetto copia venga creato e visualizzato di conseguenza.

Approccio 2: copiare un oggetto in Java tramite il metodo 'clone ()'.

IL ' clone() ” metodo del “ java.lang.Oggetto ” class prende un oggetto come parametro, lo crea e ne fornisce una copia. Questo metodo può essere implementato per copiare un oggetto facendo riferimento all'oggetto già creato (che deve essere copiato) e al metodo “clone()”.

Sintassi

oggetto. clone ( )

Questo metodo fornisce una copia dell'oggetto e genera ' CloneNotSupportedException ” se la classe dell'oggetto non implementa/applica l'interfaccia “Cloneable”.

Esempio
Passa attraverso le seguenti righe di codice:

pubblico classe CopiaOggetto implementa Clonabile {
int id ;
Corda città ;
CopiaOggetto ( int id , Corda città ) {
Questo . id = id ;
Questo . città = città ;
}
pubblico vuoto Schermo ( ) {
Sistema. fuori . println ( 'ID ->' + Questo . id ) ;
Sistema. fuori . println ( 'Città ->' + Questo . città ) ;
}
pubblico statico vuoto principale ( Corda [ ] arg ) lancia CloneNotSupportedException {
Ingresso dello scanner = nuovo Scanner ( Sistema. In ) ;
Sistema. fuori . println ( 'Inserisci l'ID: ' ) ;
int id = ingresso. successivoInt ( ) ;
Sistema. fuori . println ( 'Inserisci la città: ' ) ;
Corda città = ingresso. Prossimo ( ) ;
Oggetto CopyObject1 = nuovo CopiaOggetto ( id , città ) ;
Sistema. fuori . println ( 'Oggetto predefinito ->' ) ;
oggetto1. Schermo ( ) ;
Sistema. fuori . println ( 'Oggetto copiato ->' ) ;
Oggetto CopyObject2 = ( CopiaOggetto ) oggetto1. clone ( ) ;
oggetto2. Schermo ( ) ;
ingresso. vicino ( ) ;
} }

In base al blocco di codice sopra, eseguire i passaggi indicati di seguito:

  • Ricordiamo gli approcci discussi rispettivamente per definire una classe, specificare le variabili membro, creare un costruttore di classi parametrizzato (allocare i valori passati) e definire una funzione per visualizzare i valori.
  • Ora in ' principale() ”, allo stesso modo, l'utente inserisce i valori e passa questi valori all'oggetto di classe creato e li visualizza tramite la funzione corrispondente.
  • Dopodiché il “ clone() Entra in vigore il metodo che viene associato all'oggetto già creato per creare un oggetto copia.
  • Infine, visualizza anche il contenuto dell'oggetto copiato tramite la funzione discussa.

Produzione

In questo risultato, si può osservare che i valori di input dell'utente vengono restituiti due volte con risultati identici, assicurando che l'oggetto della classe venga copiato in modo appropriato.

Conclusione

Un oggetto può essere copiato in Java usando il ' Costruttore di copie ', o il ' clone() ' metodo. Il primo approccio copia l'oggetto prendendo l'oggetto già creato come argomento del costruttore di copie. Quest'ultimo approccio è associato direttamente all'oggetto di classe creato. Questo articolo ha dimostrato gli approcci per copiare un oggetto in Java.