您的位置:首页 > 编程语言 > Java开发

通过Spring LocalVariableTableParameterNameDiscoverer 获取方法参数名

2016-05-26 11:26 459 查看
import org.springframework.core.LocalVariableTableParameterNameDiscoverer
public class Test{
private static final LocalVariableTableParameterNameDiscoverer parameterNameDiscoverer = new LocalVariableTableParameterNameDiscoverer();

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

public static void main(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());
}
}

public class UserServiceImpl implements IUserService {

@Autowired
private UserDao userDao;

public void addUser(String userId,User user) {
userDao.add(user);
}
}

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

扩展信息:
Spring此功能是基于ASM框架实现
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息