本文作者:程序员飞云

本站地址:https://www.flycode.icu

1. 首先先根据相应的类所在的包获取Class

例如我现在有个包com.flySdk.client.FlyApiClient

String classPath = "com.flySdk.client.FlyApiClient"
Class<?> clientClazz = Class.forName(classPath);

2. 获取构造方法,以及填入相应的参数构造出客户端

// 1. 获取构造器,参数为ak,sk
Constructor<?> binApiClientConstructor = clientClazz.getConstructor(String.class, String.class);
// 2. 构造出客户端
Object apiClient = binApiClientConstructor.newInstance(accessKey, secretKey);

3. 获取这个类里面的所有方法

Method[] methods = clientClazz.getMethods();

4. 判断方法是否是需要调用的方法,返回获取相应的方法里面的参数

for (Method method : methods) {
if(method.getName.equals(methodName)){
Class<?>[] parameterTypes = method.getParameterTypes();
// 不需要参数,直接调用
if (parameterTypes.length == 0) {
// 如果没有参数,直接调用
return method.invoke(apiClient);}
// 需要参数
Gson gson = new Gson();
bject parameter = gson.fromJson(userRequestParams, parameterTypes[0]);
return method.invoke(apiClient, parameter);
}
}

总结

首先先通过类路径获取到对应的Class 如果有构造方法的话,那么就先使用构造器,构造出一个newInstance,然后传入相应的值 接下来就是获取里面相应的方法,然后调用里面的方法invoke即可。