2008-09-11 10 views
181

Dans l'extrait suivant:les mots-clés pour la classe externe d'une classe interne anonyme

public class a { 
    public void otherMethod(){} 
    public void doStuff(String str, InnerClass b){} 
    public void method(a){ 
     doStuff("asd", 
      new InnerClass(){ 
       public void innerMethod(){ 
        otherMethod(); 
       } 
      } 
     ); 
    } 
} 

Y at-il un mot-clé pour faire référence à la classe externe de la classe interne? Fondamentalement ce que je veux faire est outer.otherMethod(), ou quelque chose de semblable, mais ne peux pas sembler trouver n'importe quoi.

Répondre

298

En général, vous utilisez OuterClassName.this pour désigner l'instance englobante de la classe externe.

Dans votre exemple qui serait a.this.otherMethod()

+0

peut vous dire pourquoi 'a.otherMethod()' l'habitude de travailler? –

+2

@ T.Todua 'OuterClassName.otherMethod()' se référerait à une méthode statique, donc vous avez besoin de 'OuterClassName.this' pour obtenir l'instance de la classe externe. –

+0

Can OuterClassName.this être null à l'intérieur d'une classe interne, dans certains cas? –

40
OuterClassName.this.outerClassMethod();