Java derin klon / örnek kopyası yapmak için önerilen bir yolu olup olmadığını merak ediyorum.
Aklımda 3 çözüm var, ancak bazılarını kaçırabilirim ve fikrinizi almak istiyorum
edit: Bohzo önerisi dahil ve soru rafine: bu sığ klonlama daha derin klonlama hakkında.
Kendin Yap:
özelliklerden sonra elle özellikleri klonlayın ve değişebilir örneklerin de klonlandığını kontrol edin.
pro:
- ne yapılacağını kontrol
- hızlı yürütme
eksilerini:
- yazma ve bakım için sıkıcı
- hata eğilimli (kopyalama / yapıştırma hatası, eksik özellik, yeniden atanmış değiştirilebilir özellik)
Yansımayı kullan:
Kendi yansıma araçlarınızla veya harici bir yardımcıyla (jakarta ortak fasulyeleri gibi) işi bir satırda yapacak genel bir kopyalama yöntemi yazmak kolaydır.
pro:
- kolay yazma
- bakım
eksilerini yok :
- ne olacağını daha az kontrol
- yansıma aracı alt nesneleri de klonlamazsa değiştirilebilir nesne ile eğilimli hata
- yavaş yürütme
Klon çerçevesini kullanın:
Bunu sizin için yapan bir çerçeve kullanın, örneğin:
commons-lang Serileştirme
Java Derin Klonlama Kütüphanesi
Dozer
Kryo'yu kullanır
pro:
- yansıma ile aynı
- tam olarak klonlanacaklar üzerinde daha fazla kontrol.
eksileri:
- her değişebilir örnek, hiyerarşinin sonunda bile tamamen klonlanır
- yürütmek çok yavaş olabilir
Çalışma zamanında klon yazmak için bayt kodu araçlarını kullanma
javassit , BCEL veya cglib , bir elin yazdığı kadar hızlı bir özel klon oluşturmak için kullanılabilir. Birisi bu amaç için bu araçlardan birini kullanan bir lib biliyor mu?
Burada ne kaçırdım?
Hangisini önerirsiniz ?
Teşekkürler.