2013-03-15 82 views
0

我們知道創建實例內部類的對象,我們必須遵循此語法爲什麼實例和靜態內部類初始化不同?

<OuterClassName>.<InnerClassName> innerObj = outerObj.new <InnerClassName>(arguments); 

而對於靜態類的語法是這樣的

<OuterClassName>.<InnerClassName> innerObj = new <OuterClassName>.<InnerClassName>(arguments); 

,但我無法理解爲了創建一個對象,outerObj.new <InnerClassName>(arguments);new <OuterClassName>.<InnerClassName>(arguments);之間的區別。

回答

4

當內部類不是靜態的,你需要外部類的引用來引用它..因此outerObj.new InnerClass()。而且您不需要外部類實例(對象)來引用靜態內部類。

+1

是的,並且'new '中的OuterClassName只是名稱空間解析的問題。 – Claude 2013-03-15 09:07:33

+0

@Sudanshu,但爲什麼關鍵詞「新」的位置正在改變? – Hablu 2013-03-15 09:18:25

0

這是因爲如果你有一個靜態類,你不能實例化它,所以你沒有這樣的outerObj,通過它你可以創建所需的內部類實例。