2011-10-14 36 views
6

ile ve olmadan ben hem Object ve Cloneable için javadoc okudum ve sadece bir şey "alma" değilim. Birisi iki Aşağıdaki örneklere performansı ve/veya fonksiyonel farklılıklar bana açıklayabilir misiniz:geçersiz kılma klon klonlanamaz

public class Widget 
{ 
    @Override 
    public Widget clone() 
    { 
      // ... return a clone of this Widget 
    } 
} 

..ve: Cloneable yana

public class Widget implements Cloneable 
{ 
    @Override 
    public Widget clone() 
    { 
      // ... return a clone of this Widget 
    } 
} 

ona bağlı herhangi bir yöntem var ve sadece gelmez Object'un korumalı clone() yöntemine erişebilmenizi sağlar, herhangi bir şekilde kendi başına (güvenli) klonlama() kodunuzu yazmanızın gerekeceğini görerek, bunu ilk etapta uygulamak bile mantıklı olur mu? ? Herhangi bir açıklama/giriş için şimdiden teşekkür ederiz.

cevap

5

contractual obligation ürünüdür. istisna CloneNotSupportedException içinde klonlanabilir arabirimi sonuçları uygulamıyor örneğinde Nesnenin klon yöntemini çağırma

atılan.

geçersiz kılmak için hiçbir yöntem olsa da

, yine de bir parçası olan bir arayüzü uygulamaktadır. Bunu yaparken, müteakip sözleşme ile birlikte gelen her şeyi üstlenirsiniz. Bu, clone() yöntemini bilerek uygulayabilmenizi zorlar ve böylece davranışı açık hale getirir. kurucular olmadan -

+0

Çok ilginç - teşekkürler! – IAmYourFaja

+0

bağlantısı artık çalışmıyor – marcospgp

0

a) klonlanması nesneleri inşa dildışı bir şekilde başlatır.

b) Klonlama Eğer CloneNotSupportedException ile bir türlü tedavi etmek gerekir - ya da tedavisi için istemci kodunu rahatsız.

c) Faydaları küçük - sadece elle kopyalama yapıcı yazmak zorunda değilsiniz. Yani, Cloneable judiosly kullanın. İyi bir şekilde uygulamak için başvurmanız gereken çaba ile karşılaştırmada size yararlı faydalar sağlamaz.

About Java cloneable