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
?
Qui c'è una spiegazione decente di clone()
se finisci per averne bisogno...
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.