2012-01-01 68 views
3

Collections是一個公共類,那麼我們可以調用它的隱式默認構造函數。它沒有私有構造函數,它會阻止創建對象或強制使用靜態工廠方法。當我實例化爲new Collections()時,出現「構造函數不可見」的錯誤。總之爲什麼我們不能有java.util.Collections類的實例?謝謝。爲什麼我們不能創建Collections類的實例(不是Collection接口)?

+3

您認爲它會做什麼? – SLaks 2012-01-01 12:48:30

+0

你想要什麼? – fge 2012-01-01 12:49:11

+3

我的java.util.Collections類有一個私有的構造函數! – home 2012-01-01 12:50:00

回答

8

documentation:「這個類完全由運行或返回集合的靜態方法組成。」

換句話說,Collections只是一個方法的集合。它的一個例子沒有任何意義。它就像數學函數一樣:你沒有數學實例,只需使用函數。

它不是interface,因爲它有具體的方法。

+0

謝謝,哪個概念阻止我們創建Collections類的實例。我同意它是無用的,我只是爲了好奇而問。再次感謝。 – Ahamed 2012-01-01 12:50:53

+1

@Ahamed:看到我的評論,有一個私人(不可見)的構造函數 – home 2012-01-01 12:51:26

+1

好奇心是一個完全正確的理由來問一個問題,艾哈邁德! :) – 2012-01-01 12:52:02

4

「構造函數不可見」消息的原因是構造函數是私有的(第73行),或者至少根據this site。正如其他人已經指出的那樣,您將如何處理此類的實例,因爲它只包含靜態方法

// Suppresses default constructor, ensuring non-instantiability. 
private Collections() { 
} 
+0

謝謝。在源代碼中,它在那裏,但反編譯器,這幫助我偷看類裏面沒有顯示私有構造函數。 – Ahamed 2012-01-01 13:01:17

+1

@Ahamed - 那麼你使用的反編譯器有問題。嘗試使用'javap'。 – 2012-01-01 14:13:10

+0

我已經嘗試過'javap'命令。它沒有顯示私有構造函數,不知道爲什麼,可能是因爲它是空構造函數。有一個私有的構造函數,它駐留在類文件中,並防止實例化,但不會顯示在反編譯器或javap命令:) – Ahamed 2012-01-01 15:53:32

相關問題