SORU
16 EKİM 2014, PERŞEMBE


Neden Cloneable ıtiraz değil mi?

Java Cloneable arayüzü kırık olduğu yaygın olarak anlaşılmaktadır. ; others adı vermeyeceğim değil mi zaten bunun için birçok sebep vardır. Ayrıca Java architects kendilerini konumunda bulunuyor.

Benim sorum bu nedenle: neden henüz onaylanmaz değil mi? Çekirdek Java takım bozuk olduğuna karar, o zaman da itiraz kabul olmalılar. Yani (Java 8 still not deprecated) yaparak karşı nedenleri nelerdir?

CEVAP
16 EKİM 2014, PERŞEMBE


bug clone() artık işe yaramaz olur Cloneable, yöntem ekleme hakkında Java Bug Database 1997 yılında sundu. "" Ve gerekçe şöyle oldu: . düzeltemeyeceği kararı ile kapatıldı

Güneş Teknik İnceleme Komitesi (Türk KIZILAYI) uzunluğunda bu sorunu kabul ve alarak karşı tavsiyeherhangi bir eylem geliştirmek dışında güncel Cloneable arabirimi belgeleri. İşte tam öneri metin:

Mevcut Java nesne klonlama API sorunludur. Bir var ""java.yöntem klon korumalı lang.Nesne ve orada bir arabirim. java.lang.Cloneable. Niyeti eğer bir sınıf izin istiyor. diğer insanları klonlamak için, Cloneable destek vermeli arayüzü ve varsayılan korumalı klon yöntemi geçersiz kılar kamu klon yöntemi. Ne yazık ki, sebep elverişli lost zaman, arayüzü bir klon tanımlamıyor bu Cloneable sisleri yöntem.

Bu arada karışıklık adil bir miktar olur. Bazı sınıflar Cloneable desteklediğini iddia, ama yanlışlıkla desteği unutmayın klon yöntemi. Geliştiriciler nasıl hakkında karıştı çalışma ve Klon ne yapması beklenir.

Ne yazık ki, "" Cloneable için bir yöntem olurdu klon bir ekleme uyumsuz değiştirin. Ama ikili uyumluluk, sonu olmayacak kaynak uyumluluk kırmak. Anekdot kanıtlar gösteriyor dersleri destek nerede durumlarda bir dizi pratik var Cloneable arayüzü ama kamu klon bir yöntem sağlamak için başarısız. Sonra tartışma, Türk KIZILAYI değiştirmek gerektiği oybirliğiyle tavsiye mevcut Cloneable arabirimi, uyumluluk etkisi nedeniyle.

Alternatif bir öneri yeni bir arayüz eklemek oldu java.lang.PubliclyCloneable gerçek kullanım amacını yansıtmak için Cloneable. 5'e 2 çoğunluk tarafından, Türk KIZILAYI buna karşı tavsiye. Asıl sorun bu henüz daha fazla karışıklık eklemek olurdu (dahil yazım karışıklığı!) zaten karışık bir resim.

Türk KIZILAYI ek eklemeliyiz oybirliğiyle tavsiye mevcut Cloneable belgelerine arayüzüiyi tarif kullanılacak ve açıklamak için tasarlanmıştır nasıl "uygulamalar" en iyi uygulayıcıları.

Bu doğrudan ilgili olmasa da bu yüzdenkaldırılmışsizlerle değil , yapmak için "" Teknik İnceleme Komitesi karar verdi . yani itiraz Cloneable ^strong>varolan belgeleri değiştirmek yeterli olacaktırbu arayüz kullanışlı hale getirmek için. Ve yaptılar da. Java kadar 1.4, Cloneable aşağıdaki gibi belgelenmiştir

Bir sınıf Cloneable arabirimi belirtmek için uygular Nesne.() klon bu yöntemi yapmak için yasal olan yöntem -her alan için, o sınıfın örnekleri kopyası.

Bu Cloneable uygulayan örneklerini klonlamak için çalışır arayüzü özel durum CloneNotSupportedException bu neden atılmış.

Arabirim Cloneable hiçbir yöntem beyan eder.

Java 1.4 Şubat 2002'de yayımlanan) geçerli sürüm (Java 8) beri bu gibi görünüyor:

Bir sınıf Cloneable arabirimi belirtmek için uygular Nesne.() klon bu yöntemi yapmak için yasal olan yöntem -her alan için, o sınıfın örnekleri kopyası. Yürütmesini Nesne klon Cloneable uygulamıyor bir örnek yöntemi arayüzü özel durum CloneNotSupportedException bu sonuçlanır atılmış.

Kongre tarafından, bu arabirimini uygulayan sınıflar geçersiz kılmak Nesne.ortak bir klon yöntemi ile korunmaktadır. Bakın Nesne.() klon bu yöntem geçersiz kılma. ayrıntılar için

Bu arayüzü clone yöntemini içermez unutmayın. Bu nedenle, mümkün sadece gerçeği sayesinde bir nesneyi klonlamak için değil bu arabirimi uygulayan. Eğer klon yöntemi çağrıldığında bile düşünceli, başarılı olacağı garantisi yoktur.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Charles Renaud

    Charles Rena

    10 Kasım 2007
  • failblog

    failblog

    17 HAZİRAN 2008
  • Helen Bradley

    Helen Bradle

    4 Mart 2008