获取java代码中方法的参数名信息

随着java8的使用,在相应的方法签名中增加了新的对象Parameter,用于表示特定的参数信息,通过它的getName可以获取相应的参数名.即像在代码中编写的,如命名为username,那么在前台进行传参时,即不需要再编写如@Parameter("username")类的注解,而直接就能进行按名映射.
如下的代码参考所示:

public class T {
    private interface T2 {
        void method(String username, String password);
    }

    public static void main(String[] args) throws Exception {
        System.out.println(T.class.getMethod("main", String[].class).getParameters()[0].getName());
        System.out.println(T2.class.getMethod("method", String.class, String.class).getParameters()[0].getName());
        System.out.println(T2.class.getMethod("method", String.class, String.class).getParameters()[1].getName());
    }
}

按java8之前,也可以通过一些手段拿到参数名信息,只不过方式不同而已.如通过spring mvc中的ParameterMethodNameResolver在之前的版本中也可以正常工作.不过需要特别的编译而已.这里面起作用的即是 LocalVariableTable 和 MethodParameters,中文编译为本地变量表和方法参数表.

继续阅读“获取java代码中方法的参数名信息”