java 反射 怎么调用private的set方法设置值
时间: 2024-03-26 12:41:49 浏览: 72
Java 反射调用设置值
可以通过 Java 反射机制中的 Method 对象来调用私有方法。以下是一个示例代码:
```java
import java.lang.reflect.Method;
public class ReflectPrivateMethod {
public static void main(String[] args) throws Exception {
// 获取需要调用的方法所在的类
MyClass obj = new MyClass();
Class<?> clazz = obj.getClass();
// 获取私有方法的 Method 对象
Method method = clazz.getDeclaredMethod("setAge", int.class);
method.setAccessible(true); // 设置可访问私有方法
// 调用私有方法设置值
method.invoke(obj, 18);
// 验证私有方法是否设置成功
System.out.println(obj.getAge()); // 输出 18
}
}
class MyClass {
private int age;
public int getAge() {
return age;
}
// 私有方法
private void setAge(int age) {
this.age = age;
}
}
```
这个例子中,我们首先获取到需要调用私有方法的类 `MyClass` 的 Class 对象。然后,使用 `getDeclaredMethod` 方法获取到 `setAge` 方法的 Method 对象,并使用 `setAccessible` 方法将其设置为可访问的。最后,使用 `invoke` 方法调用方法并设置私有属性的值。
阅读全文