ホームページ >Java >&#&チュートリアル >Java の内部クラスから外部クラスのインスタンスにアクセスするにはどうすればよいですか?

Java の内部クラスから外部クラスのインスタンスにアクセスするにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-02 16:55:41698ブラウズ

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

内部クラスから外部クラスのインスタンスを取得する

次のコードを考えてみましょう。ここでの目的は、内部クラスから外部クラスのオブジェクトにアクセスすることです。内部クラスのインスタンス:

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

外部クラスへのアクセス内部クラス内のインスタンス

内部クラス内では、OuterClass.this 式を使用して、外側のインスタンスを参照できます。 「Qualified This」として知られるこの手法を使用すると、内部クラス内から外部クラスのメンバーにアクセスできます。

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

内部クラスを変更せずに外部クラスのインスタンスにアクセスする

内部クラスを変更できない場合は、パッケージ レベルのアクセスを通じて外部クラスのインスタンスにアクセスできる場合があります。 this$0 で示される、囲みインスタンス フィールド。

OuterClass outerRef = inner.this;

追加メモ

  • 名前 this$0 は Java によって認識されますが、 Java ではその使用が推奨されません。
  • 一般に、Java 言語仕様にアクセスする際にパッケージ レベルのアクセスに依存しないようにすることが良い方法であると考えられています。
  • その変更を制御できる場合、外部クラスのインスタンスを明示的に返すメソッドを内部クラスに追加することは、より堅牢なソリューションです。

以上がJava の内部クラスから外部クラスのインスタンスにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。