Aşağıdaki kodu göz önünde bulundurun:
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'
Bu yüzden, dum
u dumtwo
ya kopyalamak ve dumtwo
yu etkilemeden dum
u değiştirmek istiyorum. Ancak yukarıdaki kod bunu yapmıyor. Ben dum
da bir şey değiştirdiğimde, aynı değişiklik dumtwo
da da oluyor.
Sanırım, dumtwo = dum
dediğimde, Java sadece referansını kopyalıyor. Peki, dum
un yeni bir kopyasını oluşturmanın ve onu dumtwo
ya atamanın bir yolu var mı?
Eğer ihtiyaç duyarsanız, burada clone()
ile ilgili iyi bir açıklama var...
Bunu yapmak için nesneyi bir şekilde klonlamanız gerekir. Java'nın bir klonlama mekanizması olmasına rağmen, zorunda değilseniz bunu kullanmayın. Kopyalama işini sizin için yapan bir kopyalama yöntemi oluşturun ve sonra yapın:
dumtwo = dum.copy();
Burada kopyalama işlemini gerçekleştirmek için farklı teknikler hakkında daha fazla tavsiye bulabilirsiniz.