单元自测用反射获取私有方法
时间: 2024-06-09 18:10:09 浏览: 81
反射是一种机制,可以在运行时动态地获取类的信息,包括私有方法。通过反射,可以获取私有方法的Method对象,并且设置其可访问性后进行调用。下面是使用反射获取私有方法的示例代码:
```java
// 获得class类
Class<?> calcutate2Class = SwiftMessageProviderImpl.class;
// 获取目标类的实例
Object instance = calcutate2Class.newInstance();
// 获得method,注意这里不能使用getMethod方法,因为该方法只能获取public修饰的方法
// 第一个参数是私有方法的方法名,第二个参数是入参的类型列表,如new Class[]{String.class}
Method method = calcutate2Class.getDeclaredMethod("setRemittanceInfo", new Class[]{SwiftBlock4.class});
// 设置方法可访问
method.setAccessible(true);
// 调用私有方法
SwiftBlock4 swiftBlock4 = new SwiftBlock4();
swiftBlock4.append(new Field70C("123"));
Object result = method.invoke(instance, new Object[]{swiftBlock4});
// 输出结果
System.out.println(result);
```
以上代码中,我们首先获取了目标类的Class对象,然后通过调用newInstance方法创建了一个类的实例。接下来,使用getDeclaredMethod方法获取了私有方法的Method对象,并使用setAccessible方法将方法设置为可访问。最后,通过调用invoke方法执行私有方法。
阅读全文