Следующая является законным (по моим сведениям):В чем причина OuterClass.this.someMethod()?
class Outer {
void someMethod() {
// do something
}
class Inner {
void innerMethod() {
Outer.this.someMethod();
}
}
}
Хотя я понимаю, что происходит, и то, что результат, я не понимаю, почему это хорошо.
Я в основном смущен тем, как экземпляр внешнего класса доступен через синтаксис статического элемента: Outer.this
Не следует ли this
, ссылка на конкретный экземпляр Outer, быть чем-то НО статическим? Является ли синтаксис тем же, но функциональность отличается, или this
как-то статическое поле Outer?
Иными словами, этот код обращается к экземпляру внешнего класса с использованием синтаксиса Class.field
, который я всегда ассоциировал со статическими членами. Однако, если это один конкретный экземпляр класса, как он может быть статичным? По этой логике другой экземпляр Outer вернет другой Outer-объект из Object.this
... который не является статичным ... мой мозг болит.