如何使用反射调用类的私有方法?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
使用反射调用类的私有方法需要首先获取该类的Class对象,然后通过getMethod或getDeclaredMethod方法获取到私有方法的Method对象(注意,getMethod只能获取到public方法,而getDeclaredMethod可以获取到所有方法,包括私有方法)。之后,需要调用setAccessible(true)方法将私有方法的访问权限设置为可访问,最后通过invoke方法调用该私有方法。示例代码如下:
try {
Class<?> managerType = manager.getClass();
Method doSomethingMethod = managerType.getDeclaredMethod("doSomething", String.class);
doSomethingMethod.setAccessible(true);
doSomethingMethod.invoke(manager, "name参数");
} catch (Exception e) {
e.printStackTrace();
}