Как вы получаете ссылку на заключающий класс из анонимного внутреннего класса в Java?[дубликат]

StackOverflow https://stackoverflow.com/questions/31201

  •  09-06-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

Я только недавно нашел это.Использование 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 - статическое поле или метод.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top