Altro
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
?
759
3
Sì. Dovete Copiare in profondità il vostro oggetto.
Qui c'è una spiegazione decente di
clone()
se finisci per averne bisogno...Qui: clone (metodo Java)
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:
Qui c'è qualche altro consiglio su diverse tecniche per realizzare una copia.