web-dev-qa-db-fra.com

Comment peut-on accéder à "ceci" de la classe externe depuis une classe interne?

Est-il possible d'obtenir une référence à this à partir d'une classe interne Java?

c'est à dire.

class Outer {

  void aMethod() {

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

Vous pouvez accéder à l'instance de la classe externe de la manière suivante:

Outer.this
81
Guillaume

Extérieur 

c'est à dire.

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

BTW En Java, les noms de classe commencent par majuscule par convention. 

28
OscarRyz

Ajoutez le nom de classe de la classe externe à ceci:

outer.this
6
staticman

oui, vous pouvez utiliser le nom de classe externe avec this . outer.this

1
giri

Extra: Ce n'est pas possible quand la classe interne est déclarée 'statique'.

0
Josbert Lonnee