Heim >Java >javaLernprogramm >Wie kann ich in Java von einer inneren Klasse aus auf die Instanz der äußeren Klasse zugreifen?

Wie kann ich in Java von einer inneren Klasse aus auf die Instanz der äußeren Klasse zugreifen?

DDD
DDDOriginal
2025-01-02 16:55:41744Durchsuche

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

Abrufen der Instanz der äußeren Klasse aus einer inneren Klasse

Betrachten Sie den folgenden Code, dessen Ziel darin besteht, von einem auf das Objekt der äußeren Klasse zuzugreifen Instanz der inneren Klasse:

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

Zugriff auf die Instanz der äußeren Klasse von innen Klasse

Innerhalb der inneren Klasse können Sie den OuterClass.this-Ausdruck verwenden, um auf die umschließende Instanz zu verweisen. Diese als „Qualified This“ bekannte Technik ermöglicht Ihnen den Zugriff auf Mitglieder der äußeren Klasse aus der inneren Klasse heraus.

public OuterClass getOuter() {
    return OuterClass.this;
}

Zugriff auf die Instanz der äußeren Klasse, ohne die innere Klasse zu ändern

Wenn Sie nicht die Möglichkeit haben, die innere Klasse zu ändern, ist es möglicherweise möglich, über den Zugriff auf die umschließende Instanz auf Paketebene auf die Instanz der äußeren Klasse zuzugreifen Feld, gekennzeichnet durch this$0.

OuterClass outerRef = inner.this;

Zusätzliche Hinweise

  • Der Name this$0 wird von Java erkannt, obwohl von seiner Verwendung in Java abgeraten wird Sprachspezifikation.
  • Es gilt allgemein als bewährte Vorgehensweise, sich beim Zugriff auf die Beilage nicht auf den Zugriff auf Paketebene zu verlassen Instanz.
  • Das Hinzufügen einer Methode zur inneren Klasse, um die Instanz der äußeren Klasse explizit zurückzugeben, ist eine robustere Lösung, wenn Sie die Kontrolle über deren Änderung haben.

Das obige ist der detaillierte Inhalt vonWie kann ich in Java von einer inneren Klasse aus auf die Instanz der äußeren Klasse zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn