Maison > Java > javaDidacticiel > Comment puis-je accéder à l'instance de classe externe à partir d'une classe interne en Java ?

Comment puis-je accéder à l'instance de classe externe à partir d'une classe interne en Java ?

DDD
Libérer: 2025-01-02 16:55:41
original
733 Les gens l'ont consulté

How Can I Access the Outer Class Instance from an Inner Class in Java?

Ré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 = ?? ;
    }
}
Copier après la connexion

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;
}
Copier après la connexion

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;
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal