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,則這樣配置
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<compilerArgument>-parameters</compilerArgument>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
這樣編譯,就能得到真正的方法參數名了,最後的打印結果是
name