如何从内部类访问外部类的"this"?

llm*_*llm 68 java inner-classes

是否有可能this从Java内部类中获取引用?

class Outer {

  void aMethod() {

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

Gui*_*ume 89

您可以像这样访问外部类的实例:

Outer.this
Run Code Online (Sandbox Code Playgroud)


Osc*_*Ryz 32

Outer.this

即.

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

BTW在Java类名称中按惯例以大写开头.


sta*_*man 8

将外层类的名称前缀为:

outer.this
Run Code Online (Sandbox Code Playgroud)