SORU
16 Temmuz 2009, PERŞEMBE


Neden clone() java yöntemi korumalı.lang.Nesne?

clone() java.lang.Object korumalı olarak tanımlanmış belirli nedeni nedir?

CEVAP
16 Temmuz 2009, PERŞEMBE


Klon korumalı olması clone yöntem ** 5 arayüzü ilan olmadığı gerçeği gibi, son derece tartışmalı.

Yöntem nedeniyle veri kopyalarını almak için oldukça işe yaramaz hale getirirdiyemezsin:

if(a instanceof Cloneable) {
    copy = ((Cloneable) a).clone();
}

Cloneable tasarımı olduğunu düşünüyorumbüyük ölçüde bir hata olarak değerlendirdi(alıntı aşağıda). Normalde bir arayüz uygulamaları Cloneable ama yapabilmek isterdimille olun arabirimi Cloneable(Serializable kullanımı benzer). Bu yansıma olmadan yapılamaz:

ISomething i = ...
if (i instanceof Cloneable) {
   //DAMN! I Need to know about ISomethingImpl! Unless...
   copy = (ISomething) i.getClass().getMethod("clone").invoke(i);
}

AlıntıJosh Bloch Etkin Java:< / ^ br . "Arabirimi nesneleri için kendisine dahil ederse, bir arayüz olarak tasarlanmıştır, Cloneable klonlama izin duyurması. Ne yazık ki başarısız hizmet bu amaç ... Bu son derece atipik kullanım arabirimleri ve tek olmak benzetilmiş ... için uygulama arayüzü için herhangi bir etkisi üzerinde bir sınıf, ve nesnenin alt sınıflarından itaat etmeliyizoldukça karmaşık, uygulanamaz ve büyük ölçüde belgelenmemiş protokolü"

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • jat4011

    jat4011

    16 EKİM 2010
  • JorteexHD

    JorteexHD

    20 NİSAN 2012
  • TheForgottenGamer1

    TheForgotten

    28 AĞUSTOS 2009