Как получить ссылку на класс ограждающего от анонимного внутреннего класса в Java?

голоса
47

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

Задан 27/08/2008 в 21:36
источник пользователем
На других языках...                            


3 ответов

голоса
85

Я только что нашел это в последнее время . Используйте OuterClassName.this.

class Outer {
    void foo() {
        new Thread() {
            public void run() {
                Outer.this.bar();
            }
        }.start();
    }
    void bar() {
        System.out.println("BAR!");
    }
}

Обновление Если вы просто хотите , сам объект (вместо ссылающихся членов), то Outer.thisесть путь.

Ответил 27/08/2008 в 21:40
источник пользователем

голоса
19

использование EnclosingClass.this

Ответил 27/08/2008 в 21:40
источник пользователем

голоса
1

Вы все еще можете использовать Outer.class, чтобы получить класс объекта внешнего класса (который будет возвращать один и тот же объект класса, как Outer.this.getClass (), но является более эффективным)

Если вы хотите получить доступ к статики в классе ограждающей, вы можете использовать Outer.name где имя является статическое поле или метод.

Ответил 16/09/2008 в 16:18
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more