Sometimes, when we import 3rd-party libraries, we can find cases where the information we want is has been populated in an object but, the property is a private one and there are no methods to recover it. Here, it is where the Java reflection capabilities can help us.
Note: Use reflection carefully and, usually, as a last resource.
Let’s say we have a simple class with a private property:
class A {
private String value = "value";
}
We want to access the property “value” but, for obvious reasons, we cannot do it.
We can implement our reflection method to access the property value:
import java.lang.reflect.Field;
public class Reflection {
public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
final A a = new A();
final Field secureRenegotiationField = a.getClass().getDeclaredField("value");
secureRenegotiationField.setAccessible(true);
System.out.println((String) secureRenegotiationField.get(a));
}
}
With these few lines of code, we will be able to access the value.