Comment obtenir une référence à la classe englobante à partir d’une classe interne anonyme en Java ?[dupliquer]
Question
Cette question a déjà une réponse ici :
Je crée actuellement une référence explicite à cela dans la classe externe afin d'avoir un nom auquel faire référence dans la classe interne anonyme.Y a-t-il une meilleure manière de faire cela?
La solution
Je viens de trouver ça récemment.Utiliser OuterClassName.this
.
class Outer {
void foo() {
new Thread() {
public void run() {
Outer.this.bar();
}
}.start();
}
void bar() {
System.out.println("BAR!");
}
}
Mis à jour Si vous voulez juste l'objet lui-même (au lieu d'invoquer des membres), alors Outer.this
est la voie à suivre.
Autres conseils
Utiliser EnclosingClass.this
Vous pouvez toujours utiliser Outer.class pour obtenir la classe de l'objet de classe externe (qui renverra le même objet Class que Outer.this.getClass() mais est plus efficace)
Si vous souhaitez accéder aux statistiques de la classe englobante, vous pouvez utiliser Outer.name où name est le champ ou la méthode statique.