Saya bertanya-tanya apakah ada cara yang disarankan untuk melakukan klon / copy contoh dalam java.
Saya memiliki 3 solusi dalam pikiran, tetapi saya dapat melewatkan beberapa, dan saya ingin memiliki pendapat Anda
sunting: sertakan Bohzo propositon dan saring pertanyaan: ini lebih tentang kloning yang dalam daripada kloning yang dangkal.
Lakukan sendiri:
kode properti klon dengan tangan setelah properti dan periksa apakah instance yang dapat diubah juga dikloning.
pro:
- kontrol apa yang akan dilakukan
-
kontra eksekusi cepat :
- membosankan untuk menulis dan memelihara
- rawan bug (kegagalan copy / paste, properti yang hilang, properti yang bisa ditransfer kembali)
Gunakan refleksi:
Dengan alat refleksi Anda sendiri atau dengan penolong eksternal (seperti orang biasa jakarta) mudah untuk menulis metode penyalinan generik yang akan melakukan pekerjaan dalam satu baris.
pro:
- mudah untuk menulis
- tidak ada pemeliharaan
kontra:
- kurang kontrol apa yang terjadi
- rawan bug dengan objek bisa berubah jika alat refleksi tidak mengkloning sub objek juga
- eksekusi lebih lambat
Gunakan kerangka kerja klon:
Gunakan kerangka kerja yang melakukannya untuk Anda, seperti:
commons-lang SerializationUtils
Java Deep Cloning Library
Dozer
Kryo
pro:
- sama seperti refleksi
- kontrol lebih besar atas apa yang akan dikloning.
kontra:
- setiap instance yang dapat diubah sepenuhnya dikloning, bahkan pada akhir hierarki
- bisa sangat lambat untuk dieksekusi
Gunakan instrumentasi bytecode untuk menulis klon saat runtime
javassit , BCEL atau cglib mungkin digunakan untuk menghasilkan cloner khusus secepat satu tangan ditulis. Seseorang tahu lib menggunakan salah satu alat ini untuk tujuan ini?
Apa yang saya lewatkan di sini?
Mana yang akan Anda rekomendasikan ?
Terima kasih.