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 サイトの他の関連記事を参照してください。