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

Patricia Arquette
リリース: 2024-10-28 06:02:02
オリジナル
524 人が閲覧しました

Can Java Reflection Access Private Fields?

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

質問: Java のリフレクション メカニズムを使用してプライベート フィールドにアクセスできますか?次のコード スニペットの str フィールドのようなものですか?

<code class="java">public class Test {

   private String str;
   public void setStr(String value) { str = value; }
}</code>
ログイン後にコピー

答え: はい、リフレクション経由でプライベート フィールドにアクセスできます。ただし、別のクラスからフィールドにアクセスする場合は、セキュリティ権限を付与する必要があり、setAccessible(true) を使用する必要があります。

次の例を考えてみましょう:

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

public class Other {

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

public 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>
ログイン後にコピー

注: この実践は、元のクラスの作成者によって設定されたカプセル化の原則に違反するため、通常は推奨されません。検証チェックや他のフィールドへの依存関係がバイパスされ、予期しない動作が発生する可能性があります。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!