2013-03-15 90 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,通过它你可以创建所需的内部类实例。

相关问题