Maison >Java >javaDidacticiel >Java Reflection peut-il être utilisé pour accéder à des champs privés ?
Accès aux champs privés avec Java Reflection
Question : Les champs privés en Java sont-ils accessibles via la réflexion ?
Réponse : Oui, il est possible d'accéder aux champs privés avec la réflexion Java. Cependant, il est important de noter que cela nécessite des autorisations particulières.
Pour accéder à un champ privé d'une classe différente, la méthode setAccessible(true) de la classe Field peut être utilisée. Par exemple, considérons le code suivant :
<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>
Ce code accède avec succès au champ privé str et imprime sa valeur. Cependant, il est crucial de faire preuve de prudence lorsque l’on utilise la réflexion pour accéder à des champs privés. Cela compromet l'encapsulation prévue par le concepteur de la classe. Cela pourrait entraîner l'omission des contrôles de validation ou d'autres interactions inattendues.
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!