


Comment puis-je accéder à l'instance de classe externe à partir d'une classe interne en Java ?
Jan 02, 2025 pm 04:55 PMRécupération de l'instance de classe externe à partir d'une classe interne
Considérez le code suivant, où l'objectif est d'accéder à l'objet de classe externe à partir d'un instance de classe interne :
public class OuterClass { public class InnerClass { private String name = "Peakit"; } public static void main(String[] args) { OuterClass outer = new OuterClass(); InnerClass inner = outer.new InnerClass(); // Retrieve the outer class instance... OuterClass anotherOuter = ?? ; } }
Accès à l'instance de classe externe depuis l'instance de classe interne Class
Au sein de la classe interne, vous pouvez utiliser l'expression OuterClass.this pour faire référence à l'instance englobante. Cette technique, connue sous le nom de « Qualified This », vous permet d'accéder aux membres de la classe externe depuis la classe interne.
public OuterClass getOuter() { return OuterClass.this; }
Accès à l'instance de classe externe sans modifier la classe interne
Si vous n'avez pas la possibilité de modifier la classe interne, il peut être possible d'accéder à l'instance de classe externe via un accès au niveau du package au champ d'instance englobant, noté this$0.
OuterClass outerRef = inner.this;
Notes supplémentaires
- Le nom this$0 est reconnu par Java, bien que son utilisation soit déconseillée dans la spécification du langage Java. .
- Il est généralement considéré comme une bonne pratique d'éviter de s'appuyer sur un accès au niveau du package pour accéder au fichier englobant. instance.
- L'ajout d'une méthode à la classe interne pour renvoyer explicitement l'instance de classe externe est une solution plus robuste si vous contrôlez sa modification.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Comment fonctionne le mécanisme de chargement de classe de Java, y compris différents chargeurs de classe et leurs modèles de délégation?

Top 4 frameworks JavaScript en 2025: React, Angular, Vue, Svelte

Comment puis-je utiliser JPA (Java Persistance API) pour la cartographie relationnelle des objets avec des fonctionnalités avancées comme la mise en cache et le chargement paresseux?

Comment utiliser Maven ou Gradle pour la gestion avancée de projet Java, la création d'automatisation et la résolution de dépendance?

Node.js 20: Boosts de performances clés et nouvelles fonctionnalités

Iceberg: L'avenir des tables de Data Lake

Spring Boot SnakeyAml 2.0 CVE-2022-1471 Issue fixe

Comment puis-je implémenter des techniques de programmation fonctionnelle en Java?
