gpt4 book ai didi

java - OuterClass.this.someMethod() 背后的基本原理是什么?

转载 作者:行者123 更新时间:2023-11-29 06:32:06 26 4
gpt4 key购买 nike

以下是合法的(据我所知):

class Outer {
void someMethod() {
// do something
}

class Inner {
void innerMethod() {
Outer.this.someMethod();
}
}
}

虽然我知道发生了什么以及结果是什么,但我不明白为什么这样可以。

我最困惑的是如何通过静态成员语法访问外部类的实例:Outer.this 不应该 this,对 a 的引用Outer 的特定实例,除了静态之外什么都不是?是语法相同但功能不同,还是 this 不知何故是 Outer 的静态字段?

换句话说,该代码使用 Class.field 语法访问外部类的实例,我一直将其与静态成员相关联。但是,如果它是某个类的一个特定实例,它怎么可能是静态的呢?按照这种逻辑,Outer 的不同实例会从 Object.this 返回不同的 Outer 对象...这不是静态的...我的脑袋疼。

最佳答案

this 确实不是静态的。这只是一种用于区分生活在同一范围内的不同对象的符号。

如果没有这种表示法,就无法从 Inner 对象中获取对 Outer 对象的引用。将 Outer.this.someMethod() 替换为 this.someMethod() 会出现编译错误,因为 this 本身引用了 内部 对象(没有someMethod 方法)。

关于java - OuterClass.this.someMethod() 背后的基本原理是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31163707/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com