J'essaie d'écrire une méthode qui récupère un champ privé dans une classe en utilisant la réflexion.
Voici ma classe (simplifiée pour cet exemple) :
public class SomeClass {
private int myField;
public SomeClass() {
myField = 42;
}
public static Object getInstanceField(Object instance, String fieldName) throws Throwable {
Field field = instance.getClass().getDeclaredField(fieldName);
return field.get(instance);
}
}
Alors disons que je fais ça :
SomeClass c = new SomeClass();
Object val = SomeClass.getInstanceField(c, "myField");
Je reçois un IllegalAccessException
parce que myField
est privée. Existe-t-il un moyen d'obtenir/de définir des variables privées en utilisant la réflexion ? (Je l'ai déjà fait en C#, mais c'est la première fois que je l'essaie en Java). Si vous vous demandez pourquoi il est nécessaire de faire une telle folie :), c'est parce que parfois, pendant les tests unitaires, il est pratique de définir des variables privées à des valeurs fictives pour les tests d'échec, etc.
Merci.