2008-08-27 6 views

Répondre

85

Je viens de découvrir récemment. Utilisez OuterClassName.this.

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

Mise à jour Si vous voulez juste l'objet lui-même (au lieu des membres invoquant), puis Outer.this est le chemin à parcourir.

+0

MERCI! Cela me dérange depuis trop longtemps. Heureux la réponse était une recherche rapide google loin. – aglassman

19

Utilisez EnclosingClass.this

1

Vous pouvez toujours utiliser Outer.class pour obtenir la classe de l'objet de la classe externe (qui retourne le même objet de classe comme Outer.this.getClass() mais est plus efficace)

Si vous souhaitez accéder statique dans la classe englobante, vous pouvez utiliser Outer.name où name est le champ ou la méthode statique.

Questions connexes