本文作者:程序员飞云
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即可。
评论