Java でのリフレクションを介したプライベート フィールドへのアクセス
概要
Java のカプセル化メカニズムにより、開発者は次のことが可能になります。プライベートフィールドなどのオブジェクトメンバーへのアクセスを制限します。ただし、Java のリフレクション API を使用すると、これらの制限を回避することができます。この記事では、プライベート フィールドにリフレクション経由でアクセスできるかどうか、またその方法について説明します。
プライベート フィールドへのアクセス
はい、リフレクション経由でプライベート フィールドにアクセスできます。これを実現するには:
例:
プライベート フィールド str:
<code class="java">class Test { private String str; public void setStr(String value) { str = value; } }</code>リフレクション経由で str フィールドにアクセスするには:
<code class="java">import java.lang.reflect.*; class Other { public static void main(String[] args) throws Exception { Test t = new Test(); t.setStr("hi"); Field field = Test.class.getDeclaredField("str"); field.setAccessible(true); Object value = field.get(t); System.out.println(value); } }</code>
注意:
技術的には可能ですが、リフレクション経由でプライベート フィールドにアクセスすると、重大な問題が発生する可能性があります。欠点:以上がリフレクションを使用して Java のプライベート フィールドにアクセスできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。