getDeclaredFields()
方法是 Java 反射 API 中的一个方法,用于获取一个类中声明的所有字段(包括私有、受保护、默认访问和公共字段,但不包括继承的字段)。这个方法返回一个 Field
对象数组。
然而,getDeclaredFields()
方法本身并不能修改字段。要修改字段,你需要使用 Field
类的 setAccessible(true)
方法来设置字段的访问权限,然后使用 Field
类的 set()
方法来设置字段的值。
以下是一个简单的示例:
import java.lang.reflect.Field; public class Main { public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException { MyClass obj = new MyClass(); Field field = MyClass.class.getDeclaredField("myField"); // 设置访问权限 field.setAccessible(true); // 获取字段值 System.out.println("Before: " + field.get(obj)); // 修改字段值 field.set(obj, 42); // 再次获取字段值 System.out.println("After: " + field.get(obj)); } } class MyClass { private int myField = 10; }
在这个示例中,我们首先使用 getDeclaredField()
方法获取 MyClass
类中的 myField
字段。然后,我们使用 setAccessible(true)
方法设置字段的访问权限,以便我们可以修改它。接下来,我们使用 field.get(obj)
获取字段的值,并使用 field.set(obj, 42)
修改字段的值。最后,我们再次获取字段的值并打印出来。