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