Referencing an enclosing instance from an inner class
java
Solution
I know this is part of the Java spec, but exactly what is going on when you use .this?
It just refers to a "hidden" field within `Bar`. It's easiest to see this by decompiling. You'll see that there's a `Bar` constructor taking a reference to an instance of `Foo`. That reference is stored in a field, and then when you use `Foo.this`, it just accesses that field. So assuming you'd put your `Foo.this.doSomething()` into a `someMethod` call, your code is similar to:
class Foo {
static class Bar {
private final Foo $foo;
Bar(Foo foo) {
this.$foo = foo;
}
public void someMethod() {
$foo.doSomething();
}
}
}
Problem
This is a knowledge/curiosity question only. After several years in Java, this has only just struck me. ``` class Foo { class Bar{ Foo.this.doSomething(); } } ``` When I look at `Foo.this`, I would assume that it's a static reference which obviously is not the case. I know this is part of the Java spec, but exactly what is going on when you use `<Class>.this`? Is it one of those "it just is" things?