如果知道方法名 class.getDeclaredMethod(String, Class...)
如果不知道方法名可以获取所有的Method class.getDeclaredMethods()
然后使用invoke方法,将方法注入到class中调用
具体事例代码如下
import java.lang.reflect.Method;
PvHourly appPv = new PvHourly(arg);
pvCount(Constants.PC_IDENTIFY, "pc","pc",appPv);
//pvCount方法
public static void pvCount(String sign ,String inputLoad,String outLoad,Object obj) {
Class cl = obj.getClass();
try {
Method init = cl.getDeclaredMethod("init", String.class,String.class);
cl.getDeclaredMethods()
init.invoke(obj,inputLoad,outLoad);
} catch (Exception e) {
e.printStackTrace();
}
}
最终执行结果如同appPv.init(inputLoad,outLoad);
为何要如此实现:
因为针对不同的业务逻辑,执行的方法名是相同的只是里面的逻辑处理运算,请求的实体等不一致所以会考虑使用java反射的一个方法pvCount来简化代码操作,因此有了这一个解决思路。
参考文章有:https://blog.csdn.net/ichsonx/article/details/9108173