【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
推荐阅读
- 反射
- shiro的作用和执行流程总结
- 黑马程序员18-4(【day18集合泛型 练习与总结】)
- 05|循环得到resultset中的值
- javaSE|javaEE JDBC, dbutils插件, 事务
- javaSE 第三方插件commons-dbutils, 操作数据库的工具类, QueryRunner类, (update() 增、删、改操作)
- javaSE 第三方插件commons-dbutils, 操作数据库的工具类, QueryRunner类, (query() 查询操作)
- HashMap(jdk8)
- 邮件开发(邮件作用、邮件服务器、电子邮箱与邮件客户端软件)