How to read a private member of class via Java Reflections ?
Programmatically, we can't access the private member of a class.
But its possible to access the same via Java Reflections API.
We can consider the use case such as a JUnit test case,which require to check in some private members of a class, when a particular method is invoked.
Code:
import org.apache.commons.lang.reflect.FieldUtils;
Object objectVar = null;
Field[] fields = obj.getClass().getDeclaredFields();
for (Field field : fields)
{
if (field.getName().equals("VARIABLE_NAME"))
{
objectVar = FieldUtils.readField(field, runtimeEngine, true);
//In this case, VARIABLE_NAME was the private member that we required to access
Logger localLogger = (ch.qos.logback.classic.Logger) objectVar;
}
}
Programmatically, we can't access the private member of a class.
But its possible to access the same via Java Reflections API.
We can consider the use case such as a JUnit test case,which require to check in some private members of a class, when a particular method is invoked.
Code:
import org.apache.commons.lang.reflect.FieldUtils;
Object objectVar = null;
Field[] fields = obj.getClass().getDeclaredFields();
for (Field field : fields)
{
if (field.getName().equals("VARIABLE_NAME"))
{
objectVar = FieldUtils.readField(field, runtimeEngine, true);
//In this case, VARIABLE_NAME was the private member that we required to access
Logger localLogger = (ch.qos.logback.classic.Logger) objectVar;
}
}
No comments:
Post a Comment