创建innerclass的对象时无法理解赋值运算符右边部分的逻辑

Unable to understand the logic of the part to the right of assignment operator when creating object of inner class

我在搜索的问题中没有找到我的答案,这就是我问它的原因。

class outer 
{
class inner  // non static .
{
}
}

For creating object of inner class I am unable to understand the logic of the part to the right of assignment operator .

outer o = new outer () ;
outer.inner y = o. new inner () ; //  I have doubt in this line .

这里的outer.inner是return类型但是右边的部分呢?

我知道的事情: 我们不能写 outer.inner y = new outer.inner () ;因为 inner 是非静态的。

问题是非 static 内部 class 绑定到包含 class 的特定实例。这就像 class 定义有一个隐藏的引用成员,类似于:

class Outer {
  class Inner {
    private final Outer outer;
    Inner(Outer outer) { this.outer = outer; }
  }
}

这就是正在发生的事情 outer.inner y = o.new inner(),因为 inner 不是 static 它需要实例化 outer 并且该语法用于传递隐藏的 outer 对实例的引用。

如果Inner变为static那么它就不再需要限定实例了,外部class的名称就足够了,例如:new Outer.Inner().

outer o = new outer () ;
outer.inner y = o. new inner () ; 

因此,第一部分 outer.inner 是您所说的 return 类型。

其次,o是对包含内部对象的外部对象的引用,只有引用了外部对象,才能访问内部对象。现在 o. new inner () ; 只是说 "go into the object o, then create an object of type inner".