0Pricing
Java Academy · Lesson

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 instance

All lessons in this course

  1. Class Inspection with Reflection
  2. Invoking Methods and Accessing Fields
  3. Dynamic Proxies with InvocationHandler
  4. Reflection Performance and Alternatives
← Back to Java Academy