ホームページ  >  記事  >  Java  >  Java リフレクションを使用してプライベート フィールドにアクセスできますか?

Java リフレクションを使用してプライベート フィールドにアクセスできますか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-31 07:00:17466ブラウズ

Can Java Reflection Be Used to Access Private Fields?

Java リフレクションを使用したプライベート フィールドへのアクセス

質問: Java のプライベート フィールドはリフレクションを通じてアクセスできますか?

回答: はい、Java リフレクションを使用してプライベート フィールドにアクセスすることができます。ただし、これには特別な権限が必要であることに注意することが重要です。

別のクラスからプライベート フィールドにアクセスするには、Field クラスの setAccessible(true) メソッドを使用できます。たとえば、次のコードを考えてみましょう。

<code class="java">import java.lang.reflect.*;

class Other
{
    private String str;
    public void setStr(String value)
    {
        str = value;
    }
}

class Test
{
    public static void main(String[] args)
        throws Exception
    {
        Other t = new Other();
        t.setStr("hi");
        Field field = Other.class.getDeclaredField("str");
        field.setAccessible(true);
        Object value = field.get(t);
        System.out.println(value);
    }
}</code>

このコードは、プライベート フィールド str に正常にアクセスし、その値を出力します。ただし、リフレクションを使用してプライベート フィールドにアクセスする場合は注意が必要です。これは、クラスの設計者が意図したカプセル化を損ないます。これにより、検証チェックがスキップされたり、その他の予期しないインタラクションが発生したりする可能性があります。

以上がJava リフレクションを使用してプライベート フィールドにアクセスできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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