Pertanyaan Java mengembalikan salinan untuk menyembunyikan perubahan di masa mendatang


Di Jawa, katakanlah Anda memiliki kelas yang membungkus ArrayList (atau koleksi) objek.

Bagaimana Anda akan mengembalikan salah satu objek tersebut sehingga penelepon tidak akan melihat perubahan apa pun di masa mendatang terhadap objek yang dibuat di ArrayList?

Anda ingin mengembalikan salinan objek yang dalam, tetapi Anda tidak tahu apakah itu kloning.


5
2017-08-27 09:48


asal


Jawaban:


Ubah itu menjadi spec:
-bahwa objek perlu mengimplementasikan antarmuka agar diizinkan masuk ke koleksi Sesuatu seperti ArrayList<ICloneable>()

Maka Anda dapat yakin bahwa Anda selalu melakukan salinan mendalam - antarmuka harus memiliki metode yang dijamin untuk mengembalikan salinan yang mendalam.

Saya pikir itu yang terbaik yang dapat Anda lakukan.


4
2017-08-27 09:52



Salah satu pilihan adalah menggunakan serialisasi. Berikut adalah posting blog yang menjelaskannya:

http://weblogs.java.net/blog/emcmanus/archive/2007/04/cloning_java_ob.html


2
2017-08-27 09:52



Saya kira itu adalah jawaban yang berapi-api:

Buatlah persyaratan untuk kelas yang disimpan dalam koleksi agar dapat kloning. Anda dapat memeriksa bahwa pada waktu penyisipan atau pada waktu pengambilan, apa pun yang lebih masuk akal, dan melemparkan pengecualian.

Atau jika item tersebut tidak kloning, hanya gagal kembali ke opsi kembali dengan referensi.


1
2017-08-27 09:53