Je crée actuellement une référence explicite à ceci dans la classe externe de sorte que j'ai un nom auquel faire référence dans la classe interne anonyme. Y a-t-il une meilleure manière de faire cela?Comment obtenir une référence à la classe englobante d'une classe interne anonyme en Java?
47
A
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.
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
- 1. Une classe interne privée synthétise une classe anonyme inattendue
- 2. Classe interne anonyme dans groovy
- 3. Comment faire référence à la classe externe dans une autre instance d'une classe interne non statique?
- 4. Comment transférer une classe interne?
- 5. java - IO sur la classe interne
- 6. Comment obtenir une référence à une autre classe correctement?
- 7. les mots-clés pour la classe externe d'une classe interne anonyme
- 8. Accéder à un Jbutton "anonyme" dans une classe anonyme d'une autre classe anonyme?
- 9. instanciation une classe interne
- 10. Comment obtenir la taille interne/client d'une sous-classe NSView?
- 11. Quel est le problème avec une classe interne n'utilisant pas une classe externe en Java?
- 12. C# Obtenir le nom du type dérivé à partir de la classe de base interne Classe
- 13. Comment accéder à la classe interne à l'aide de Reflection
- 14. Comment puis-je utiliser une instance de classe interne provenant d'une autre méthode de classe interne?
- 15. Méthode Classe interne locale
- 16. En Java, puis-je créer une instance d'une sous-classe anonyme à partir d'un objet Class?
- 17. Comment "requérir" une classe voisine en Java?
- 18. C# - Comment accéder à la classe interne de l'assemblage externe
- 19. points à la classe par référence
- 20. Comment étendre la classe IconNodeWidget en Java?
- 21. comment accéder à champ de classe interne à l'intérieur javascript
- 22. Java Generics & Hadoop: comment obtenir une variable de classe
- 23. Classe d'exécution en Java
- 24. Comment faites-vous référence à une classe Java dans le même package à partir d'un Clojure?
- 25. Référence de classe de la classe de paramètre générique
- 26. La classe Java question
- 27. Comment déclarer une ressource d'une classe interne privée dans WPF?
- 28. Python: référence à une classe à partir d'une chaîne?
- 29. Comment forcer une sous-classe Java à définir une annotation?
- 30. En ActionScript3, comment obtenez-vous une référence à la classe d'un objet?
MERCI! Cela me dérange depuis trop longtemps. Heureux la réponse était une recherche rapide google loin. – aglassman