Ako skopírujem objekt v jazyku Java?

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?

Áno. Musíte Hlboké kopírovanie svojho objektu.

Komentáre (1)

Tu je slušné vysvetlenie funkcie clone(), ak ju budete potrebovať...

Tu: clone (Java method)

Komentáre (0)

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.

Komentáre (0)