Come si copia un oggetto in Java?

Considerate il codice qui sotto:

DummyBean dum = new DummyBean();
dum.setDummy("foo");
System.out.println(dum.getDummy()); // prints 'foo'

DummyBean dumtwo = dum;
System.out.println(dumtwo.getDummy()); // prints 'foo'

dum.setDummy("bar");
System.out.println(dumtwo.getDummy()); // prints 'bar' but it should print 'foo'

Quindi, voglio copiare il dum in dumtwo e cambiare dum senza influenzare il dumtwo. Ma il codice sopra non lo fa. Quando cambio qualcosa in dum, lo stesso cambiamento avviene anche in dumtwo.

Immagino che quando dico dumtwo = dum, Java copi il riferimento solo. Quindi, c'è un modo per creare una nuova copia di dum e assegnarla a dumtwo?

Sì. Dovete Copiare in profondità il vostro oggetto.

Commentari (1)

Qui c'è una spiegazione decente di clone() se finisci per averne bisogno...

Qui: clone (metodo Java)

Commentari (0)

Per farlo dovete clonare l'oggetto in qualche modo. Anche se Java ha un meccanismo di clonazione, non usatelo se non è necessario. Create un metodo di copia che faccia il lavoro di copia per voi, e poi fate:

dumtwo = dum.copy();

Qui c'è qualche altro consiglio su diverse tecniche per realizzare una copia.

Commentari (0)