2015-06-17 30 views
1

我在寫這個代碼這個裸露行爲this.new和內部類

list.add(this.new SelectableItem(element)); 

list.add(new SelectableItem(element)); 

我的問題是:都是一樣的東西?

+0

yes;但習慣上忽略'this.',只有'outer'不是'this',我們纔會'outer.new' – ZhongYu

回答

2

是的,它們是相同的。

something.new InnerClass(...)被用於創建一個內部類,其中something是取值爲到外部類的實例的引用的表達式的一個實例的最一般的語法(記住每內部類的實例有到外部類的引用實例)。

something.被省略,即new InnerClass(...),而你恰好是在外部類的一個實例方法,那麼它隱含意味着this.new InnerClass(...),隨便怎麼樣,當你寫的實例變量或方法調用,而不明確地訪問它通過這意味着this.someInstanceVariable含蓄地表示this.someInstanceVariable)。

2

他們基本上是因爲SelectableItem同樣是內,非靜態類GuiSelectionList和你從GuiSelectionList類實例化它。

看到這個相關的SO question about "object.new"