`
jaychang
  • 浏览: 716956 次
  • 性别: Icon_minigender_1
  • 来自: 嘉兴
社区版块
存档分类
最新评论

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics