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.