Java klonlamasıyla ilgili çevrimiçi eğiticiler arıyordum, ancak sadece klonla() ilgili dezavantajları ve avantajları hakkında hiçbir şey bulamadım. Java clone() kullanmanın bazı avantajlarını bilmek isterim.Java Klonlama'nın Avantajları
cevap
Klonlama kullanımları kesinlikle vardır. Nesnelerde gösterilen, "farklı kaydet" (çoğalt ve yeniden adlandır) yapabileceğiniz veri kayıtlarınızın olduğu her türlü iş uygulamasını düşünün. Bu veri, Cloneable arabirimini uygulayan bir nesnede tutulursa, orijinali kopyalayabilir ve yeni bilgilerle güncelleyebilirsiniz.
Bu yeni bir nesne örneği oluşturmak ve açık üzerinden veri, tüm kopyalama üstündür. Bazı insanlar bunu kopyalayıcıyı yapan yardımcı sınıflar ve yöntemlerle ele alırlar, ancak o zaman sınıfın kendisi dışında bir OO programlaması zayıf olan bir sınıfın kopyalanması için gerekli bilgilere sahip olursunuz. Bir GUI için bir takviye deposu olarak bir sınıf kullandığınızda
Sevdiğim Başka bir örnek kullanım
ve GUI bir reset düğmesine sahip olduğunu. GUI başlatıldığında, yedekleme deposu nesnesini klonladım. Daha sonra kullanıcı geri yüklemeye basarsa, GUI'yi klon nesnesindeki değerlere yeniden başlatabilirim, ancak hangi bilgileri değiştirmiş olabilirler veya depodaki orijinal bilgilerin yeni bir kopyasını aldım. Kesinlikle birçok kullanım var.Klonlama bildiğiniz gibi bir kalıtım çerçevesindeki sorunları gündeme getirebilir ve aksi takdirde hafif veri sınıflarını toparlayabilir, bu yüzden bir iş gereksinimi olmadıkça bir nesneyi klonlanabilir olmaz. Orijinal nesnenin tam kopyasını oluşturmak için bir (sözde) kolay bir yol olan:
Ben sorun klonlama avantajları hakkında bir şey bulmakta zorlanırsanız nedeni avantajı örtülü olduğunu düşünüyorum. Ne yazık ki, Java'nın klonlama() ve Cloneable aracılığıyla yerleşik klonlama mekanizmasının, sınıflarınızın tasarımı için sahip olduğu korkunç etkilerle ilgili olarak düşünmek için çok fazla dezavantajı vardır. Josh Bloch, neden bir interview numaralı telefondan özetlenen Etkili Java kitabında clone() veya Cloneable kullanmamanız için bir bölüm içermektedir.
genel öneri hala sığ ya da derin kopya uygun olup olmadığına karar vermek zorunda olsa da, bunun yerine klon() veya klonlanamaz kullanmanın bir kopya kurucu kullanmaktır. Ayrıca, derin bir klon oluşturmak için Serializable veya JAXB gibi bir seri hale getirme API'sini ve çeşitli klonlama kitaplıklarını da kullanabilirsiniz. İlgili bir soruda çok güzel bir tartışma bulabilirsiniz, Java: recommended solution for deep cloning/copying an instance.
Object.clone() birçok tasarım sorunları var ama yine de nesneleri kopyalama popüler ve en kolay yoldur. klon kullanan bazı avantajları()) (
- O asırlık projeleri için, sadece, içinde klonlanamaz uygulamak, bir üst sınıfını tanımlamak klonu tanım sunmalıdır bile klonlama uygulamak için en kolay yoludur vardır Metot ve siz ebeveynlerinizin her çocuğunun klonlama özelliğini alacağınız hazırsınız.
- Klonlama, çok daha az kod satırı gerektirir; yalnızca, derin kopyaya gerek duymazsanız 4 veya 5 satır uzunluğunda clone() yöntemiyle soyut bir sınıf.
- Klonlama, dizileri kopyalamanın en hızlı yoludur. Bir dizi klon çağrı serbest 1.5 itibarıyla
- , olan derleme tipi açık şekilde tipi döküm gerektirmeyen dizileri üzerinde klon çağrı anlamına gelir klonlandı dizinin aynı olan bir dizi döner.
Okuyabiliyorsun daha üzerinde Java Cloning - Copy Constructor versus Cloning
- 1. Gözlemlenebilir klonlamanın en iyi yolu nedir?
- 2. GeForce üzerinden Tesla'nın Avantajları
- 3. Scala'nın tip sisteminin avantajları
- 4. Hadoop'ta NullWritable kullanmanın avantajları
- 5. JavaScript - Nesne hazırlamasının avantajları
- 6. Scalaz Kleisli kullanım avantajları
- 7. JSON üzerinden Parcelable'ın Avantajları
- 8. Self.attribute vs @attribute'un avantajları?
- 9. 64 bit işlemcinin avantajları nelerdir?
- 10. Başlatıcı listesini kullanmanın avantajları nelerdir?
- 11. NLTK'de kendi corpus oluşturmanın avantajları
- 12. "Yapılandırıcı" ayarının "prototip" özelliğindeki avantajları
- 13. CTE kullanmanın avantajları/dezavantajları nelerdir?
- 14. Inline Javascript kullanmanın avantajları nelerdir?
- 15. Avantajları Normal aşırı yük çözünürlüğü
- 16. QStandardItemModel üzerinden QAbstractItemModel avantajları nelerdir?
- 17. Süreç yürütme üzerinde JNA kullanmanın avantajları
- 18. Düzenli JS nesnesi üzerinden jQuery Widget'in avantajları?
- 19. MongoDB'nin MySQL ve PostgreSQL üzerinden avantajları nelerdir?
- 20. Mysql kalıcı bağlantıları ve mysql_pconnect avantajları?
- 21. JavaScript'te yeni Array() üzerinden [] kullanımının avantajları
- 22. Python'da çok işlemciliğin eşzamanlılıklarının avantajları nelerdir?
- 23. LINQ'a katılmak için manuel arama avantajları?
- 24. GHC Generics üzerinden SYB (kazanı çıkarır) avantajları
- 25. İlkbaharda XML yapılandırmaları üzerinden JavaConfig'in avantajları?
- 26. Doğrudan Neo4j kullanarak Spring Data neo4j kullanmanın avantajları nelerdir?
- 27. StringIO'nun String'e karşı olarak Stringio kullanmanın avantajları nelerdir?
- 28. C# 4.0 'dinamik' anahtar kelimesinin Avantajları ve Dezavantajları?
- 29. DBIx :: Connector'ın mysql_auto_reconnect'i 1'e ayarlamak için kullanmanın avantajları nelerdir?
- 30. xUnit veya NUnit? Birbirinin avantajları ve dezavantajları nelerdir?