「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Java Reflectionはプライベートフィールドにアクセスできますか?

Java Reflectionはプライベートフィールドにアクセスできますか?

2025-04-21に投稿されました
ブラウズ:914

Can You Access Private Fields in Java Using Reflection?

java

はじめに

Javaのカプセル化メカニズムにより、開発者がプライベートフィールドへのアクセスを抑制できるようになります。ただし、Javaの反射APIを使用してこれらの制限をバイパスすることができます。この記事では、リフレクションを介してプライベートフィールドにアクセスできるかどうか、およびどのようにアクセスできるかについて説明します。これを達成するには、

フィールドオブジェクトを取得します。

クラスオブジェクトのgetDeclaredfield()メソッドを呼び出してフィールドの表現を取得します。これにより、囲いクラスの外部からの個人メンバーへのアクセスが可能になります。 プライベート文字列str; public void setStr(string value){ str = value; } }
  1. 反射経由でstrフィールドにアクセスするには:
  2. Import java.lang.reflect。*; クラスその他{ public static void main(string [] args) 例外をスローします { test t = new test(); T.SetStr( "Hi"); フィールドフィールド= test.class.getDeclaredfield( "str"); field.setAccessible(true); オブジェクト値= field.get(t); System.out.println(value); } }
  3. 注意:

は技術的には可能ですが、反射を介してプライベートフィールドにアクセスすることは重要な欠点を持つ可能性があります:

はencapsulation:

を覆します。結果。注意して、絶対に必要な場合にのみ。
            
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3