2008-08-27 21 views

Respuesta

85

Acabo de encontrar este recientemente. Use OuterClassName.this.

class Outer { 
    void foo() { 
     new Thread() { 
      public void run() { 
       Outer.this.bar(); 
      } 
     }.start(); 
    } 
    void bar() { 
     System.out.println("BAR!"); 
    } 
} 

Actualizado Si lo que desea es el objeto en sí (en lugar de los miembros de la invocación), entonces Outer.this es el camino a seguir.

+0

¡GRACIAS! Esto me ha estado molestando por mucho tiempo. Me alegro de que la respuesta fuera una búsqueda rápida de Google. – aglassman

19

Uso EnclosingClass.this

1

Puede seguir utilizando Outer.class para obtener la clase del objeto de la clase externa (que devolverá el mismo objeto Class como Outer.this.getClass(), pero es más eficiente)

Si desea acceder statics en la clase adjunta, puede usar Outer.name donde name es el campo o método estático.

Cuestiones relacionadas