java 使用Reflection访问私有方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 使用Reflection访问私有方法相关的知识,希望对你有一定的参考价值。

// Access private method using Reflection
// From: https://stackoverflow.com/questions/34571/how-do-i-test-a-class-that-has-private-methods-fields-or-inner-classes

// For Methods 
Method method = targetClass.getDeclaredMethod(methodName, argClasses);
method.setAccessible(true);
return method.invoke(targetObject, argObjects);

// Worked for me 
NavigationPresenterImpl navigationPresenter = new NavigationPresenterImpl();
String methodName = "methodName";
Method method = navigationPresenter.getClass().getDeclaredMethod(methodName);
method.setAccessible(true);

// For private  fields
Field field = targetClass.getDeclaredField(fieldName);
field.setAccessible(true);
field.set(object, value);

以上是关于java 使用Reflection访问私有方法的主要内容,如果未能解决你的问题,请参考以下文章

Java反射机制

如何限制开发人员使用反射访问Java中的私有方法和构造函数?

java反射访问私有方法的的问题

java里一个私有的属性如何在其他类里面进行访问?

反射机制访问私有方法代码异常"java.lang.ClassCastException"

为啥Java不允许我通过同一个类的方法访问私有方法?