获取JAVA方法参数名称的几种方式

  • Post author:
  • Post category:java


1.使用JDK1.8的Parameter.getName()方法。

public String[] getParameterNames(Method method) {
		Parameter[] parameters = method.getParameters();
		String[] parameterNames = new String[parameters.length];
		for (int i = 0; i < parameters.length; i++) {
			Parameter param = parameters[i];
			if (!param.isNamePresent()) {
				return null;
			}
			parameterNames[i] = param.getName();
		}
		return parameterNames;
	}

2.如果是JDK1.8以下的可以使用本地变量表的方式即 ASM library 字节码技术分析class文件,经过测试这种获取参数名称的方式有些消耗性能,会慢一点。可参考spring的org.springframework.core.LocalVariableTableParameterNameDiscoverer实现该功能。

使用spring的org.springframework.core.DefaultParameterNameDiscoverer这个类默认会去JDK中找如果是JDK1.8自动使用1.8的功能,没有的话使用字节码技术找。

 Method method = null;
        try {
            method = ExpressionParser.class.getMethod("parseParams", String.class, Object[].class);
        } catch (NoSuchMethodException | SecurityException e) {
            e.printStackTrace();
        }
        
        //
        MethodParameter param = new MethodParameter(method, 1);
        param.initParameterNameDiscovery(new DefaultParameterNameDiscoverer());
        System.out.println(param.getParameterName());



版权声明:本文为Melody_Susan原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。