Deep Copy, Shallow Copy dan Clone in Java
Apabila memanipulasi objek dalam Java, memahami nuansa semantik salinan adalah penting. Salinan dalam, salinan cetek dan klon biasanya digunakan istilah untuk menerangkan pendekatan yang berbeza untuk penduaan objek.
Salinan Cetek
Salinan cetek menduplikasi tahap paling luar objek . Objek baharu mempunyai medan berasingan, tetapi sebarang rujukan yang disimpan dalam medan tersebut dikongsi dengan objek asal.
Contoh:
<code class="java">Example eg1 = new Example(1, new int[]{1, 2}); Example eg2 = new Example(eg1.foo, eg1.bar);</code>
Dalam salinan cetek ini, cth2 mempunyai foo baharu dan merujuk kepada tatasusunan bar yang sama seperti eg1.
Salinan Dalam
Salinan dalam merentasi berbilang peringkat objek, mencipta salinan baharu semua bersarang objek. Objek baharu adalah bebas sepenuhnya daripada objek asal.
Contoh:
<code class="java">Example eg1 = new Example(1, new int[]{1, 2}); Example eg2 = new Example(eg1.foo, Arrays.copy(eg1.bar));</code>
Dalam salinan dalam ini, eg2 mempunyai foo baharu dan bar tatasusunan baharu, yang ialah salinan yang ada dalam eg1.
Klon
Kaedah klon, yang wujud untuk semua objek dan tatasusunan, bertujuan untuk menghasilkan salinan. Walau bagaimanapun, tingkah lakunya tidak diseragamkan:
Kesimpulan
Penyalinan mendalam disyorkan apabila kebebasan sepenuhnya antara objek diperlukan. Penyalinan cetek sesuai apabila rujukan objek mencukupi. Tingkah laku kaedah klon adalah tidak konsisten dan harus digunakan dengan berhati-hati.
Atas ialah kandungan terperinci Salinan Dalam lwn. Salinan Cetek lwn. Klon: Mekanisme Salinan Java Mana Yang Perlu Anda Gunakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!