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

使用spring的LocalVariableTableParameterNameDiscoverer获取类方法参数名称列表

2018-01-22 10:08 791 查看
package com.yanek.soa.test;

import java.lang.reflect.Method;

import org.springframework.core.LocalVariableTableParameterNameDiscoverer;

public class MethodParmsVariableNameUtil {

/**
* @param args
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws ClassNotFoundException {

String[] names=getMethodParams("com.yanek.soa.test.Test","test2");
for(String name:names){

System.out.println(name);
}
}

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

private static final LocalVariableTableParameterNameDiscoverer parameterNameDiscoverer = new LocalVariableTableParameterNameDiscoverer();

public static String[] getMethodParams(String className, String methodName) throws ClassNotFoundException {
Class<?> aClass = Class.forName(className);
Method[] methods = aClass.getMethods();
String[] params = null;
for (Method method : methods) {
if (method.getName().equals(methodName)) {
params = getParameterNames(method);
if (params == null || params.length == 0) {
break;
}
StringBuilder sb = new StringBuilder();
sb.append("方法:" + method.getName() + "()  ");
for (int i = 0; i < params.length; i++) {
if (i > 0) {
sb.append(" ,");
}
sb.append(params[i]);
}
System.out.println(sb.toString());
break;
}
}
return params;
}

}
package com.yanek.soa.test;

public class Test {

/**
* @param args
*/
public static void main(String[] args) {

}

public  String test(String a,String b,User user) {
return "hello";
}

public static String test2(String a,String b,User user) {
return "hello";
}

public static String test3(String p1,String p2,User user) {
return "hello";
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐