这只是一个知识/好奇心问题。
在 Java 工作了几年之后,这才让我印象深刻。
class Foo {
class Bar{
Foo.this.doSomething();
}
}
当我查看 时Foo.this
,我会假设它是一个静态引用,但显然不是这样。
我知道这是 Java 规范的一部分,但是当你使用时到底发生了什么<Class>.this
?
它是那些“它就是”的东西之一吗?
这只是一个知识/好奇心问题。
在 Java 工作了几年之后,这才让我印象深刻。
class Foo {
class Bar{
Foo.this.doSomething();
}
}
当我查看 时Foo.this
,我会假设它是一个静态引用,但显然不是这样。
我知道这是 Java 规范的一部分,但是当你使用时到底发生了什么<Class>.this
?
它是那些“它就是”的东西之一吗?
我知道这是 Java 规范的一部分,但是当你使用 .this 时到底发生了什么?
它只是指Bar
. 通过反编译最容易看到这一点。您会看到有一个Bar
构造函数引用Foo
. 该引用存储在一个字段中,然后当您使用 时Foo.this
,它只是访问该字段。因此,假设您拨打电话,您Foo.this.doSomething()
的someMethod
代码类似于:
class Foo {
static class Bar {
private final Foo $foo;
Bar(Foo foo) {
this.$foo = foo;
}
public void someMethod() {
$foo.doSomething();
}
}
}