logo

Clonazione di oggetti in Java

costruttore in JavaIL clonazione di oggetti è un modo per creare una copia esatta di un oggetto. Il metodo clone() della classe Object viene utilizzato per clonare un oggetto.

IL interfaccia java.lang.Cloneable deve essere implementato dalla classe di cui vogliamo creare il clone dell'oggetto. Se non implementiamo l'interfaccia Cloneable, viene generato il metodo clone() CloneNotSupportedException .

cos'è l'alveare

IL metodo clone() è definito nella classe Object. La sintassi del metodo clone() è la seguente:

 protected Object clone() throws CloneNotSupportedException 

Perché usare il metodo clone()?

IL metodo clone() salva l'attività di elaborazione aggiuntiva per creare la copia esatta di un oggetto. Se lo eseguiamo utilizzando la nuova parola chiave, ci vorrà molto tempo di elaborazione per essere eseguito, ecco perché utilizziamo la clonazione dell'oggetto.

Vantaggio della clonazione degli oggetti

Sebbene Object.clone() presenti alcuni problemi di progettazione, è comunque un modo semplice e popolare per copiare oggetti. Di seguito è riportato un elenco dei vantaggi derivanti dall'utilizzo del metodo clone():

  • Non è necessario scrivere codici lunghi e ripetitivi. Basta usare una classe astratta con un metodo clone() lungo 4 o 5 righe.
  • È il modo più semplice ed efficace per copiare oggetti, soprattutto se lo applichiamo ad un progetto già sviluppato o vecchio. Basta definire una classe genitore, implementare Cloneable al suo interno, fornire la definizione del metodo clone() e l'attività sarà completata.
  • Clone() è il modo più veloce per copiare l'array.

Svantaggio della clonazione degli oggetti

Di seguito è riportato un elenco di alcuni svantaggi del metodo clone():

programmi di esempio Java
  • Per utilizzare il metodo Object.clone(), dobbiamo modificare molte sintassi del nostro codice, come implementare un'interfaccia Cloneable, definire il metodo clone() e gestire CloneNotSupportedException e, infine, chiamare Object.clone() ecc.
  • Dobbiamo implementare un'interfaccia clonabile mentre non contiene alcun metodo. Dobbiamo solo usarlo per dire alla JVM che possiamo eseguire clone() sul nostro oggetto.
  • Object.clone() è protetto, quindi dobbiamo fornire il nostro clone() e richiamare indirettamente Object.clone() da esso.
  • Object.clone() non invoca alcun costruttore quindi non abbiamo alcun controllo sulla costruzione dell'oggetto.
  • Se vuoi scrivere un metodo clone in una classe figlia, tutte le sue superclassi dovrebbero definire al loro interno il metodo clone() o ereditarlo da un'altra classe genitore. Altrimenti, la catena super.clone() fallirà.
  • Object.clone() supporta solo la copia superficiale ma dovremo sovrascriverlo se abbiamo bisogno di una clonazione profonda.

Esempio del metodo clone() (clonazione di oggetti)

Vediamo il semplice esempio della clonazione di oggetti

 class Student18 implements Cloneable{ int rollno; String name; Student18(int rollno,String name){ this.rollno=rollno; this.name=name; } public Object clone()throws CloneNotSupportedException{ return super.clone(); } public static void main(String args[]){ try{ Student18 s1=new Student18(101,'amit'); Student18 s2=(Student18)s1.clone(); System.out.println(s1.rollno+' '+s1.name); System.out.println(s2.rollno+' '+s2.name); }catch(CloneNotSupportedException c){} } } 
Provalo adesso
 Output:101 amit 101 amit 
scarica l'esempio di clonazione di oggetti

Come puoi vedere nell'esempio sopra, entrambe le variabili di riferimento hanno lo stesso valore. Pertanto, clone() copia i valori di un oggetto su un altro. Quindi non abbiamo bisogno di scrivere codice esplicito per copiare il valore di un oggetto su un altro.

Se creiamo un altro oggetto con la nuova parola chiave e assegniamo i valori di un altro oggetto a questo, sarà necessaria molta elaborazione su questo oggetto. Quindi, per salvare l'attività di elaborazione aggiuntiva utilizziamo il metodo clone().