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

6 Kontribusi 0 Poin


Jawaban

Object itu bukan value-type tapi reference-type.
Kalau kita butuh object yang sama tapi beda reference, kita perlu meng-'copy' object tersebut jadi object baru.
Istilah umunya Deep-Copy atau ada juga dengan dikenal sebagai Shallow and Lazy-Copy.
Untuk kasus ini, ya perlu di-'copy' object-nya.

How to Make a Deep Copy of an Object in Java
avatar soeleman

@soeleman

119 Kontribusi 145 Poin


Terima kasih banyak atas bantuan Anda
avatar mobiwan

@mobiwan

6 Kontribusi 0 Poin


Login untuk gabung berdiskusi