通过Spring LocalVariableTableParameterNameDiscoverer 获取方法参数名

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框架实现



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

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

猜你喜欢

转载自jaychang.iteye.com/blog/2398769
今日推荐