为什么实例和静态内部类初始化是不同的?

时间:2013-03-15 09:01:14

标签: java class static stack inner-classes

正如我们所知,要创建实例内部类的对象,我们必须遵循这种语法

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

对于静态类,语法就像这样

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

但我无法理解outerObj.new <InnerClassName>(arguments);new <OuterClassName>.<InnerClassName>(arguments);之间的差异,以便创建一个对象。

2 个答案:

答案 0 :(得分:4)

当内部类不是静态的时,你需要外部类的引用来引用它。因此outerObj.new是InnerClass()。并且您不需要外部类实例(对象)来引用静态内部类。

答案 1 :(得分:0)

这是因为如果你有一个静态类,你不能在第一时间实例化它,所以你没有这样的外部Obj,你可以通过它创建所需的内部类实例。