Invoking Methods and Accessing Fields
Call private methods and set inaccessible fields using Method.invoke and Field.set with setAccessible.
setAccessible: Bypassing Visibility
Call field.setAccessible(true) or method.setAccessible(true) to bypass Java's access control. Required for private members. Requires appropriate module access in Java 9+.
Field f = User.class.getDeclaredField("name");
f.setAccessible(true);
User u = new User("Alice", 30);
System.out.println(f.get(u)); // "Alice"
f.set(u, "Bob"); // mutate the private field
System.out.println(u.getName()); // "Bob"Reading Field Values
Use field.get(instance) to read any field value (boxed for primitives). For static fields, pass null as the instance.
Field f = MyClass.class.getDeclaredField("count");
f.setAccessible(true);
int count = (int) f.get(null); // static field → null instanceAll lessons in this course
- Class Inspection with Reflection
- Invoking Methods and Accessing Fields
- Dynamic Proxies with InvocationHandler
- Reflection Performance and Alternatives