Pertimbangkan kode di bawah ini:

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'

Jadi, saya ingin menyalin dum ke dumtwo dan mengubah dum tanpa memengaruhi dumtwo. Tetapi kode di atas tidak melakukan itu. Ketika saya mengubah sesuatu di dum, perubahan yang sama juga terjadi di dumtwo.

Saya kira, ketika saya mengatakan dumtwo = dum, Java hanya menyalin referensi. Jadi, apakah ada cara untuk membuat salinan dum yang baru dan menugaskannya ke dumtwo?

avatar mobiwan
@mobiwan

10 Kontribusi 1 Poin

Diperbarui 1 tahun yang lalu

2 Jawaban:

<div>Object itu bukan value-type tapi reference-type.<br>Kalau kita butuh object yang sama tapi beda reference, kita perlu meng-'copy' object tersebut jadi object baru.<br>Istilah umunya Deep-Copy atau ada juga dengan dikenal sebagai Shallow and Lazy-Copy.<br>Untuk kasus ini, ya perlu di-'copy' object-nya.<br><br><a href="https://www.baeldung.com/java-deep-copy">How to Make a Deep Copy of an Object in Java</a></div>

avatar soeleman
@soeleman

120 Kontribusi 147 Poin

Dipost 1 tahun yang lalu

<div>Terima kasih banyak atas bantuan Anda</div><div><br></div>

avatar mobiwan
@mobiwan

10 Kontribusi 1 Poin

Dipost 1 tahun yang lalu

Login untuk ikut Jawaban