SORU
28 Ocak 2010, PERŞEMBE


Java: derin klonlama/kopyalama için önerilen çözüm örneği

Eğer java örneği derin klon/kopyalama yapmak için önerilen bir yolu varsa merak ediyorum.

Aklımda 3 çözüm var, ama bazı Bayan var ve görüşlerinizi almak istiyorum

edit: Bohzo propositon vardır ve soru filtrele: sığ klonlama. daha derin klonlama.

Kendin yap:

özellikleri sonra elini özelliklerine göre klon kod ve değişken örneklerini de klonlanmış olup olmadığını kontrol edin.
pro:
- ne yapılır . kontrol ^br> - hızlı yürütme
eksileri:
- yazmak sıkıcı ve korumak
eğilimli (kopyala/yapıştır hatası, özelliği eksik, kesilebilir özellik yeniden) hata

Yansıma kullanın:

Harici bir yardımcı ortak-fasulye jakarta gibi () ile kendi yansıması araçları ile ya da kolay bir satırda iş yapacak genel bir kopyalama yöntemi yazmak için.
pro:
- yazmak kolay
- hayır bakım
eksileri:
- daha az denetim ne olur
değişken ile hata eğilimli ise yansıma aracı alt nesneleri de klon mu yoksa nesne
- yavaş yürütme

Klon çerçeve kullanın:

Sizin için bunu yapmak bir çerçeve kullanın, gibi :
commons-lang SerializationUtils
Java Deep Cloning Library
Dozer
Kryo

pro:
- yansıma gibi
- tam olarak kopyalanmış olacak ne üzerinde daha fazla kontrol.
eksileri:
- her değişken örneği tamamen, hatta hiyerarşi sonunda kopyalandı
- çok yavaş çalıştırmak için olabilir

Bayt kodu gereçleri zamanında klon yazmak için kullanın

javassit, BCEL cglib özel bir cloner kadar hızlı bir el writed oluşturmak için kullanmak olabilir. Birisi bir lib bu amaçla bu araçlardan birini kullanmayı biliyor mu ?

Ben burada ne kaçırdım ?
Hangisini tavsiye edersiniz ?

Teşekkürler.

CEVAP
28 Ocak 2010, PERŞEMBE


derin (klonlar tüm nesne hiyerarşisi) klonlama:

  • Tüm sınıflar senin kontrolünde ve Serializable uygulama zorlayabilirsiniz commons-lang SerializationUtils - serileştirme kullanarak

  • Java Deep Cloning Library - yansıtma - durumlarda sınıfları veya nesneleri istediğiniz clone out of control (bir 3. parti kitaplığı) ve zorlayamazsın onları uygulamak Serializable veya durumlarda istemiyor uygulamak Serializable

sığ klonlama (klonlar sadece ilk seviye özellikleri):

Ben kasten ihmal "kendin yap" seçeneği - API yukarıda sağlamak iyi bir denetim ne için ve ne değildir için clone (örneğin kullanarak transient String[] ignoreProperties), böylece yeniden icat tekerlek değil tercih.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • HER0R

    HER0R

    16 Aralık 2007
  • Maschine Tutorials

    Maschine Tut

    15 ŞUBAT 2011
  • Top10Series

    Top10Series

    26 Kasım 2008