java 反射 怎么调用private的执行get方法获取值
时间: 2024-03-26 12:42:00 浏览: 65
可以通过 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("getAge");
method.setAccessible(true); // 设置可访问私有方法
// 调用私有方法获取值
int age = (int) method.invoke(obj);
// 输出私有属性的值
System.out.println(age); // 输出 18
}
}
class MyClass {
private int age = 18;
public int getAge() {
return age;
}
}
```
这个例子中,我们首先获取到需要调用私有方法的类 `MyClass` 的 Class 对象。然后,使用 `getDeclaredMethod` 方法获取到 `getAge` 方法的 Method 对象,并使用 `setAccessible` 方法将其设置为可访问的。最后,使用 `invoke` 方法调用方法获取私有属性的值。
需要注意的是,如果私有属性的类型是基本数据类型,需要将 `invoke` 方法返回的 `Object` 强制转换为对应的基本数据类型。如果私有属性的类型是引用类型,可以直接强制转换。
阅读全文