Comment obtenir une référence à la classe englobante à partir d’une classe interne anonyme en Java ?[dupliquer]

StackOverflow https://stackoverflow.com/questions/31201

  •  09-06-2019
  •  | 
  •  

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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top