Я пытаюсь написать метод, который получит частное поле в классе с использованием отражения.
Здесь мой класс (упрощенный для этого примера):
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);
}
}
Так сказать, я делаю это:
SomeClass c = new SomeClass();
Object val = SomeClass.getInstanceField(c, "myField");
Я получаю IllegalAccessException
, потому что myField
является закрытым. Есть ли способ получить/установить частные переменные, используя отражение? (Я сделал это на С#, но это первый раз, когда я пробовал это на Java). Если вам интересно, почему возникает необходимость сделать такое безумие:), это потому, что иногда во время модульного тестирования это удобно для установки частных переменных на фиктивные значения для тестирования отказа и т.д.