Java 什么';这是OuterClass.this.someMethod()背后的基本原理吗?
以下是合法的(据我所知): 虽然我理解正在发生的事情和结果是什么,但我不理解为什么这是可以的 我对如何通过静态成员语法访问outer类的实例感到困惑:Java 什么';这是OuterClass.this.someMethod()背后的基本原理吗?,java,inner-classes,Java,Inner Classes,以下是合法的(据我所知): 虽然我理解正在发生的事情和结果是什么,但我不理解为什么这是可以的 我对如何通过静态成员语法访问outer类的实例感到困惑:outer。这个this,对outer的特定实例的引用,不应该是静态的吗?是语法相同但功能不同,还是这是一个静态字段 换句话说,该代码使用class.field语法访问外部类的实例,我一直将其与静态成员关联。然而,如果它是一个类的一个特定实例,它怎么可能是静态的?根据该逻辑,不同的Outer实例将从对象返回不同的Outer对象。。。这不是静态的。。
outer。这个this
,对outer的特定实例的引用,不应该是静态的吗?是语法相同但功能不同,还是这是一个静态字段
换句话说,该代码使用class.field
语法访问外部类的实例,我一直将其与静态成员关联。然而,如果它是一个类的一个特定实例,它怎么可能是静态的?根据该逻辑,不同的Outer实例将从对象返回不同的Outer对象。。。这不是静态的。。。我的大脑很痛。在您的内部类中,此
引用了您的内部
实例,因此您需要一种方法来引用外部实例,或者外部实例的字段,以防它们与内部实例中的字段冲突。因此,这个语法指示您所引用的类的哪个实例,它不是静态访问
请参见内部类中的,此
引用内部
的实例,因此需要一种方法来引用外部实例或外部实例的字段,以防它们与内部实例中的字段冲突。因此,这个语法指示您所引用的类的哪个实例,它不是静态访问
请参见此
实际上不是静态的。这只是一种用于区分同一范围内不同对象的符号
如果没有这个符号,就无法从内部对象获取对外部对象的引用。将Outer.this.someMethod()
替换为this.someMethod()
,您会得到一个编译错误,因为this
本身引用的是内部的对象(它没有someMethod
方法)。这实际上不是静态的。这只是一种用于区分同一范围内不同对象的符号
如果没有这个符号,就无法从内部对象获取对外部对象的引用。将Outer.this.someMethod()
替换为this.someMethod()
,您会得到一个编译错误,因为this
本身引用的是内部的对象(它没有someMethod
方法)。这引用的是当前对象。静态字段/方法作为一个整体属于类。
在内部类中,这将表示内部类对象。此.someMethod()将给出错误,因为内部类中不存在someMethod()。因此,如果内部类字段和外部类字段相同,则需要一种区分它们的方法。
Outer.this.someMethod()~引用外部类的someMethod()函数 这是指当前对象。静态字段/方法作为一个整体属于类。
在内部类中,这将表示内部类对象。此.someMethod()将给出错误,因为内部类中不存在someMethod()。因此,如果内部类字段和外部类字段相同,则需要一种区分它们的方法。
Outer.this.someMethod()~引用外部类的someMethod()函数
class Outer {
void someMethod() {
// do something
}
class Inner {
void innerMethod() {
Outer.this.someMethod();
}
}
}