在8以前的jdk版本的时候,我们利用反射只能获取到参数类型,然后参数名字都是利用arg0,arg1,arg2......所以在使用一些反射编程方面上不是很方便,jdk8开始开辟了这项function,但是我们正常情况下使用jvm不会默认保留参数名字,因为这个可能导致class文件过大或其他问题,所以我们如果需要可以自行开启,下面说下idea怎么开启parameters
1.File->Settings->Build,Execution,Deployment->Compiler->Java Compiler
2在 Additional command line parameters: 后面填上 -parameters,如下图
3 填好后,再将项目重新build一下,如下图
ok了
下面是一段测试代码,大家可以看看
import java.lang.reflect.Method;
import java.lang.reflect.Parameter;
public class Test {
public void createUser(String name, int age, int version) {
}
public static void main(String[] args) throws Exception {
for (Method m : Test.class.getMethods()) {
System.out.println("--------------------");
System.out.println(" method: " + m.getName());
System.out.println(" return: " + m.getReturnType().getName());
for (Parameter p : m.getParameters()) {
System.out.println("parameter:" + p.getType().getName() + ", " + p.getName());
}
}
}
}