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

从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。


Eclipse配置开启parameters

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

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


版权声明:著作权归作者所有。

相关推荐

Maven添加Sonar插件配置

在 Maven 本地库中的 settings.xml 配置文件中的节点中添加如下配置(也可以配在pom.xml里):添加以下profile<profiles> <profile> <id>sonar</id> <activation> <activeByDefault>true</

Angular 5获取当前的路由url及参数

获取当前加载组件的路由信息可以使用ActivatedRoute。ActivatedRoute接口如下:interface ActivatedRoute {    snapshot: ActivatedRouteSnapshot   url: Observable<UrlSegment[]> &nb

Vue路由传递获取参数

通过Vue传递参数可以分为两种方式:params参数query参数params参数params参数传递方式分两种:路由配置参数使用$router的push编程式添加路由配置参数在路由中配置如下:{   path: '/user/:id',   name: 'user',   component: UserDe

Java获取受信任的根证书列表的方法

import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.security.InvalidAlgorithmParameterException; import java.security.KeyStore; import java.security.KeySt

配置Eclipse使用Java9

Oxygen 4.7.1aEclipse Oxygen 4.7.1a已经支持Java 9启动,以及支持Java 9的开发,直接安装Eclipse Oxygen 4.7.1a即可,不需要特别的配置。但运行可能会出现一些环境问题,也可以按以下配置eclipse.ini指定Java 9的vm-vm C:\Program&nb