Подтвердить что ты не робот

Как вы получаете ссылку на класс включения из анонимного внутреннего класса в Java?

В настоящее время я создаю явную ссылку на это во внешнем классе, так что у меня есть имя для ссылки в анонимном внутреннем классе. Есть ли лучший способ сделать это?

4b9b3361

Ответ 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 - статическое поле или метод.