2013-07-16 65 views
0

爲什麼在調用Singleton對象上的克隆方法時出現錯誤?在Singleton對象上調用克隆方法時出現錯誤

這是我的Singleton類:

public class Singleton { 
    private Singleton(){ 
    } 
    private static Singleton singleton; 
    public static Singleton getSingleton(){ 
     if (singleton == null) { 
      singleton = new Singleton(); 
        return singleton; 
     } 
     return singleton; 
    } 

} 

這是一個用戶定義的類調用Singleton對象的克隆方法:

public class SingletonDemo { 
    public static void main(String[] args) { 
     Singleton s = Singleton.getSingleton(); 
     Singleton s1 = (Singleton)s.clone(); 
    } 
} 
+2

你能提供更多的信息嗎?你試圖做什麼,爲什麼你甚至想克隆單身(如果你想克隆它,你沒有正確使用它)。 – Nallath

回答

0

您還沒有實現Cloneable因此你會得到一個如果您嘗試克隆您的課程,則爲例外。您也應該覆蓋clone()

the docs

調用上沒有實現在異常CloneNotSupportedExceptionCloneable接口結果被拋出一個實例對象的clone方法。

還請注意advice in the comments - 克隆一個單身人士無效的首要目標。事實上,當你克隆它時,它不再是單身。

作爲一般規則(而不是適用於單身人士),考慮複製構造函數而不是克隆。

相關問題