创建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
".
我在搜索的问题中没有找到我的答案,这就是我问它的原因。
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
".