Maison > Java > javaDidacticiel > le corps du texte

Java Reflection peut-il accéder aux champs privés ?

Patricia Arquette
Libérer: 2024-10-28 06:02:02
original
524 Les gens l'ont consulté

Can Java Reflection Access Private Fields?

Accès aux champs privés via la réflexion en Java

Question : Le mécanisme de réflexion de Java peut-il être utilisé pour accéder aux champs privés, comme le champ str dans l'extrait de code suivant ?

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

   private String str;
   public void setStr(String value) { str = value; }
}</code>
Copier après la connexion

Réponse : Oui, il est possible d'accéder aux champs privés via la réflexion. Cependant, les autorisations de sécurité doivent être accordées et setAccessible(true) doit être utilisé lors de l'accès au champ à partir d'une classe différente.

Considérez l'exemple suivant :

<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>
Copier après la connexion

Remarque : Cette pratique est généralement déconseillée car elle viole les principes d'encapsulation définis par l'auteur de la classe originale. Les contrôles de validation ou les dépendances sur d'autres champs peuvent être contournés, entraînant un comportement imprévisible.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!