Pages

Friday, December 14, 2018

How to read a private member of class via Java Reflections ?

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;

            }
}

No comments:

Post a Comment