JavaSE|JAVA8反射获取方法参数名

【JavaSE|JAVA8反射获取方法参数名】jDK1.8的修改,在JDK8中,反射可以得到方法参数名了。是因为Method类加了新的方法

public Parameter[] getParameters()

但是实际项目中得到的确是arg0这样的参数名。请看下面代码:
public static void main(String[] args) throws NoSuchMethodException { final Method method = Cat.class.getMethod("say", String.class); final Parameter[] parameters = method.getParameters(); for (Parameter parameter : parameters) { System.out.println(parameter.getName()); } }

这里的cat类是这个样子的
public class Cat {public String say(String name) { return "Meow, " + name; } }

运行结果是
arg0

这是因为编译不带方法参数信息导致的
如果要编译带调试信息,需要用到javac -parameters
Javac -parameters是JDK8 新带的编译参数
如果是用gradle,那么需要配置gradle的编译参数
Gradle脚本这样配置
compileJava { options.compilerArgs << "-parameters" }

如果是maven,则这样配置
maven-compiler-plugin -parameters >1.8 1.8

这样编译,就能得到真正的方法参数名了,最后的打印结果是
name

    推荐阅读