Skip to content

反射使用

约 296 字小于 1 分钟

Java

2025-03-04

本文作者:程序员飞云

本站地址: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即可。

贡献者

  • flycodeuflycodeu

公告板

2025-03-04正式迁移知识库到此项目