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

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

Barbara Streisand
リリース: 2024-12-14 11:17:11
オリジナル
698 人が閲覧しました

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

内部クラスからの外部クラスの参照

提供されたコード スニペットには、OuterClass と InnerClass クラスがネストされています。内部クラスのコードを変更せずに、内部クラス (InnerClass) のインスタンスから親クラス (OuterClass) にアクセスすることを目的としています。

OuterClass.this の使用

InnerClass 内では、以下を使用できます。式OuterClass.thisを使用して、OuterClassの外側のインスタンスを参照します。この式は、 this キーワードを修飾して、囲んでいるインスタンスを示します。コードの修正バージョンは次のとおりです。

public class OuterClass {

    public class InnerClass {
        private String name = "Peakit";
        
        public OuterClass outer() {
            return OuterClass.this;
        }
    }

    public static void main(String[] args) {
        OuterClass outer = new OuterClass();
        InnerClass inner = outer.new InnerClass();
        
        OuterClass anotherOuter = inner.outer();

        if(anotherOuter == outer) {
             System.out.println("Was able to reach out to the outer object via inner !!");
        } else {
             System.out.println("No luck :-( ");
        }
    }
}
ログイン後にコピー

このコードを実行すると、InnerClass の external() メソッドは、外側の InnerClass のインスタンスを返します。これを元のOuterClass インスタンスと比較できます。

パッケージレベルのアクセス (非推奨)

実験を通じて、外部クラスへの参照を保持するフィールドがパッケージレベルのアクセス。これは、技術的にはリフレクションを通じて外部クラスにアクセスできることを意味します:

Field field = InnerClass.class.getDeclaredField("this");
field.setAccessible(true);
OuterClass outer = (OuterClass) field.get(inner);
ログイン後にコピー

注: このアプローチは Java 言語仕様によって推奨されておらず、異なる Java バージョンでは信頼できない可能性があります。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート