Accès aux champs privés via Reflection en Java
Introduction
Les mécanismes d'encapsulation de Java permettent aux développeurs de restreindre l’accès aux membres d’objet, tels que les champs privés. Cependant, il est possible de contourner ces restrictions à l'aide de l'API de réflexion de Java. Cet article explore si et comment les champs privés sont accessibles via la réflexion.
Accès aux champs privés
Oui, il est possible d'accéder aux champs privés via la réflexion. Pour y parvenir :
Exemple :
Considérez la classe Test suivante avec un champ privé str :
<code class="java">class Test { private String str; public void setStr(String value) { str = value; } }</code>
Pour accéder au champ str via la réflexion :
<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>
Précautions :
Bien que cela soit techniquement possible, l'accès aux champs privés via la réflexion peut avoir des conséquences importantes inconvénients :
Par conséquent, l'accès aux champs privés via la réflexion doit être fait avec prudence et uniquement lorsque cela est absolument nécessaire.
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!