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?

Jan 02, 2025 pm 04:55 PM

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 = ?? ;
    }
}
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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;
Nach dem Login kopieren

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!

Erklärung dieser Website
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

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle? Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle? Mar 17, 2025 pm 05:35 PM

Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle?

Top 4 JavaScript -Frameworks in 2025: React, Angular, Vue, Svelte Top 4 JavaScript -Frameworks in 2025: React, Angular, Vue, Svelte Mar 07, 2025 pm 06:09 PM

Top 4 JavaScript -Frameworks in 2025: React, Angular, Vue, Svelte

Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung? Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung? Mar 17, 2025 pm 05:46 PM

Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung?

Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden? Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden? Mar 17, 2025 pm 05:43 PM

Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden?

Node.js 20: wichtige Leistungssteigerung und neue Funktionen Node.js 20: wichtige Leistungssteigerung und neue Funktionen Mar 07, 2025 pm 06:12 PM

Node.js 20: wichtige Leistungssteigerung und neue Funktionen

ICEBERG: Die Zukunft von Data Lake Tabellen ICEBERG: Die Zukunft von Data Lake Tabellen Mar 07, 2025 pm 06:31 PM

ICEBERG: Die Zukunft von Data Lake Tabellen

Spring Boot Snakeyaml 2.0 CVE-2022-1471 Problem behoben Spring Boot Snakeyaml 2.0 CVE-2022-1471 Problem behoben Mar 07, 2025 pm 05:52 PM

Spring Boot Snakeyaml 2.0 CVE-2022-1471 Problem behoben

Wie kann ich funktionale Programmierungstechniken in Java implementieren? Wie kann ich funktionale Programmierungstechniken in Java implementieren? Mar 11, 2025 pm 05:51 PM

Wie kann ich funktionale Programmierungstechniken in Java implementieren?

See all articles