2008-09-11 24 views
181

En el siguiente fragmento:de palabra clave para la clase externa de una clase interna anónima

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(); 
       } 
      } 
     ); 
    } 
} 

¿Hay una palabra clave para referirse a la clase externa de la clase interna? Básicamente lo que quiero hacer es outer.otherMethod(), o algo por el estilo, pero no puedo encontrar nada.

Respuesta

298

En general, usa OuterClassName.this para referirse a la instancia adjunta de la clase externa.

En su ejemplo que sería a.this.otherMethod()

+0

se puede saber por qué 'a.otherMethod()' no trabajará? –

+2

@ T.Todua 'OuterClassName.otherMethod()' se referiría a un método estático, por lo que necesita 'OuterClassName.this' para obtener la instancia de la clase externa. –

+0

¿Puede OuterClassName.this ser nulo dentro de una clase interna, en algún caso? –

40
OuterClassName.this.outerClassMethod(); 
Cuestiones relacionadas