una reflexion reflect por obtener metodo invocar example ejemplos clase atributos java reflection

reflect - reflexion java example



Accediendo a variables privadas en Java a través de la reflexión (1)

Esta pregunta ya tiene una respuesta aquí:

Intento escribir un método que obtenga un campo privado en una clase utilizando la reflexión.

Aquí está mi clase (simplificada para este ejemplo):

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); } }

Entonces di que hago esto

SomeClass c = new SomeClass(); Object val = SomeClass.getInstanceField(c, "myField");

IllegalAccessException una IllegalAccessException porque myField es privado. ¿Hay alguna forma de obtener / establecer variables privadas usando la reflexión? (Lo hice en C #, pero esta es la primera vez que lo intento en Java). Si se está preguntando por qué existe la necesidad de hacer tal locura :), es porque a veces, durante las pruebas unitarias, es útil establecer variables privadas en valores falsos para pruebas de fallas, etc.


Lo averigué. Necesitar

field.setAccessible(true);