Java反射获取方法的参数名,Maven/IDEA/Eclipse配置

时间:2022-06-01 21:37:06

从JDK8开始,反射类添加了Parameter,通过Parameter类,我们可以从.class编译后的文件中获取方法上参数名。

获取参数名的方法:Parameter.getName()

示例:

public static List<String> getParameterNameJava8(Class clazz, String methodName) {
List<String> paramterList = new ArrayList<>();
Method[] methods = clazz.getDeclaredMethods();
for (Method method : methods) {
if (methodName.equals(method.getName())) {
//直接通过method就能拿到所有的参数
Parameter[] params = method.getParameters();
for (Parameter parameter : params) {
paramterList.add(parameter.getName());
}
}
}
return paramterList;
}

开启javac编译.class文件保留参数名

默认情况下,JDK8的javac编译后的.class文件是不保留方法的参数名,参数名是以arg0,arg1,arg3...表示。

如果要保留参数名,需要给javac添加参数-parameters开启。

Maven配置开启parameters

在pom.xml的编译插件中增加参数配置<arg>-parameters</arg>。

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<compilerArgs>
<arg>-parameters</arg>
</compilerArgs>
</configuration>

Idea配置开启parameters

  1. File->Settings->Build,Execution,Deployment->Compiler->Java Compiler
  2. 在 Additional command line parameters: 后面填上 -parameters
  3. 填好后,再将项目重新build一下,Build->Rebuild Project。
Java反射获取方法的参数名,Maven/IDEA/Eclipse配置


Eclipse配置开启parameters

Preferences->java->Compiler下勾选Store information about method parameters选项。

这样在使用eclipse编译java文件的时候就会将参数名称编译到class文件中。