欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

通过Spring LocalVariableTableParameterNameDiscoverer 获取方法参数名

程序员文章站 2022-03-02 08:34:59
...
import org.springframework.core.LocalVariableTableParameterNameDiscoverer
publicclass Test{
    privatestaticfinal LocalVariableTableParameterNameDiscoverer parameterNameDiscoverer = new LocalVariableTableParameterNameDiscoverer();

    /**
     * 获取方法所有参数名
     * @param method
     * @return
     */
    publicstatic String[] getParameterNames(Method method) {
        return parameterNameDiscoverer.getParameterNames(method);
    }

    publicstaticvoidmain(String[] args) throws ClassNotFoundException {
        Class<?> aClass = Class.forName("com.codercool.ssm.modules.system.service.impl.UserServiceImpl");
        Method[] methods = aClass.getMethods();
        StringBuilder sb = new StringBuilder();
        for (Method method : methods) {
            sb.append("方法:"+method.getName() + " ");
            String[] parameterNames = getParameterNames(method);
            if (parameterNames == null || parameterNames.length <1) {
                sb.append("无参");
            } else {
                sb.append("[");
                for (int i = 0; i < parameterNames.length ; i++) {
                    sb.append(parameterNames[i]);
                    sb.append(",");
                }
                sb.append("]");
            }
            sb.append("\n");
        }
        System.out.println(sb.toString());
    }
}


publicclass UserServiceImpl implements IUserService {

    @Autowired
    private UserDao userDao;

    publicvoidaddUser(String userId,User user) {
        userDao.add(user);
    }
}

 



输出结果:
方法:addUser [userId,user,]
方法:wait 无参
方法:wait 无参
方法:wait 无参
方法:equals 无参
方法:toString 无参
方法:hashCode 无参
方法:getClass 无参
方法:notify 无参
方法:notifyAll 无参

扩展信息:
Spring此功能是基于ASM框架实现