Как вы получаете ссылку на заключающий класс из анонимного внутреннего класса в Java?[дубликат]
Вопрос
На этот вопрос уже есть ответ здесь:
В настоящее время я создаю явную ссылку на это во внешнем классе, чтобы у меня было имя для ссылки в анонимном внутреннем классе.Есть ли лучший способ сделать это?
Решение
Я только недавно нашел это.Использование OuterClassName.this
.
class Outer {
void foo() {
new Thread() {
public void run() {
Outer.this.bar();
}
}.start();
}
void bar() {
System.out.println("BAR!");
}
}
Обновленный Если вам просто нужен сам объект (вместо вызова членов), то Outer.this
это тот путь, по которому нужно идти.
Другие советы
Использование EnclosingClass.this
Вы все еще можете использовать Outer.class для получения класса объекта внешнего класса (который вернет тот же объект класса, что и Outer.this.getClass(), но более эффективен)
Если вы хотите получить доступ к статике во вложенном классе, вы можете использовать Outer.name где name - статическое поле или метод.