面试题答案
一键面试- 获取私有方法并调用的步骤:
- 使用
Class
类的getDeclaredMethod
方法获取私有方法对象,此方法会获取类中声明的指定名称和参数类型的方法,包括私有方法。 - 通过
setAccessible(true)
方法来设置该私有方法可访问,打破Java的访问限制。 - 使用获取到的方法对象的
invoke
方法来调用该私有方法。
- 使用
- 关键代码示例:
import java.lang.reflect.Method;
class PrivateMethodClass {
private void privateMethod() {
System.out.println("This is a private method.");
}
}
public class ReflectionExample {
public static void main(String[] args) throws Exception {
// 获取类对象
Class<PrivateMethodClass> clazz = PrivateMethodClass.class;
// 获取私有方法对象
Method privateMethod = clazz.getDeclaredMethod("privateMethod");
// 设置方法可访问
privateMethod.setAccessible(true);
// 创建类的实例
PrivateMethodClass instance = clazz.newInstance();
// 调用私有方法
privateMethod.invoke(instance);
}
}
在上述代码中:
- 首先定义了一个包含私有方法
privateMethod
的类PrivateMethodClass
。 - 在
ReflectionExample
类的main
方法中,通过反射机制获取PrivateMethodClass
类的privateMethod
方法对象,并设置其可访问,然后创建PrivateMethodClass
的实例并调用该私有方法。