【问题标题】:Why the instance and static inner class initializations are different?为什么实例和静态内部类初始化不同?
【发布时间】:2013-03-15 09:01:13
【问题描述】:

我们知道要创建实例内部类的对象,我们必须遵循这个语法

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

静态类的语法是这样的

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

但我无法理解 outerObj.new &lt;InnerClassName&gt;(arguments);new &lt;OuterClassName&gt;.&lt;InnerClassName&gt;(arguments); 之间的区别以便创建对象。

【问题讨论】:

    标签: java class static stack inner-classes


    【解决方案1】:

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

    【讨论】:

    • 是的,new &lt;OuterClassName&gt;.&lt;InnerClassName&gt; 中的 OuterClassName 只是命名空间解析的问题。
    • @Sudanshu 但是为什么关键字“new”的位置发生了变化?
    【解决方案2】:

    这是因为如果你有一个静态类,你一开始就无法实例化它,所以你没有这样的 outerObj,通过它你可以创建所需的内部类实例。

    【讨论】:

      猜你喜欢
      • 2014-10-16
      • 1970-01-01
      • 2014-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-13
      • 1970-01-01
      相关资源
      最近更新 更多