Как получить доступ к «этому» внешнего класса из внутреннего класса? - PullRequest
65 голосов
/ 28 апреля 2010

Можно ли получить ссылку на this из внутреннего класса Java?

т.е.

class Outer {

  void aMethod() {

    NewClass newClass = new NewClass() {
      void bMethod() {
        // How to I get access to "this" (pointing to outer) from here?
      }
    };
  }
}

Ответы [ 5 ]

84 голосов
/ 28 апреля 2010

Вы можете получить доступ к экземпляру внешнего класса следующим образом:

Outer.this
29 голосов
/ 28 апреля 2010

Наруж. Это

т.

class Outer {
    void aMethod() {
        NewClass newClass = new NewClass() {
            void bMethod() {
                System.out.println( Outer.this.getClass().getName() ); // print Outer
            }
        };
    }
}

Кстати, имена классов Java начинаются с прописной буквы по соглашению.

6 голосов
/ 28 апреля 2010

Добавить имя класса внешнего класса к этому:

outer.this
1 голос
/ 28 апреля 2010

да, вы можете использовать имя внешнего класса с this . outer.this

0 голосов
/ 22 октября 2018

Дополнительно: невозможно, когда внутренний класс объявлен как «статический».

...