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
DDDoriginal
2025-01-02 16:55:41696parcourir

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 = ?? ;
    }
}

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!

Déclaration:
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