Zoberte si nasledujúci kód:
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'
Chcem teda skopírovať dum
do dumtwo
a zmeniť dum
bez toho, aby som ovplyvnil dumtwo
. Ale vyššie uvedený kód to nerobí. Keď niečo zmením v dum
, tá istá zmena sa uskutoční aj v dumtwo
.
Myslím, že keď poviem dumtwo = dum
, Java skopíruje iba odkaz. Existuje teda nejaký spôsob, ako vytvoriť novú kópiu dum
a priradiť ju k dumtwo
?
Tu je slušné vysvetlenie funkcie clone()
, ak ju budete potrebovať...
Ak to chcete urobiť, musíte objekt nejakým spôsobom klonovať. Hoci Java má mechanizmus klonovania, nepoužívajte ho, ak nemusíte. Vytvorte si metódu kopírovania, ktorá urobí kopírovaciu prácu za vás, a potom to urobte:
dumtwo = dum.copy();
Tu nájdete niekoľko ďalších rád o rôznych technikách na vykonanie kopírovania.