0
点赞
收藏
分享

微信扫一扫

Java编译保留方法参数名称

颜路在路上 2022-02-25 阅读 127


本文所述内容为Java8(及以后)新增的特性,该功能对做封装和做框架的人来说很有用,对普通做业务“可能”不太能用上,下面来说一下:

先来举个例子:

@RequestMapping(value = "/test10/{id}", method = RequestMethod.GET)
public ResultVO demo10(@PathVariable String id);

需求:

在这段代码中 ​​@PathVariable​​ 没有给任何参数,以往我们定义注解的时候都需要设置一下,例如 ​​@PathVariable(name = "id")​​,然后在开发时,我们绝大部分情况给的参数都是和这个一样的,所以为了省掉这个 ​​name="id"​​ 你就需要获取 ​​String id​​ 中的参数名,所以我们的目的是怎么获取这个 ​​id​​。

历史:

在Java8之前,可以说你无法做到(你是不可能读取这个 id) 的,因为Java在编译的时候会将 ​​String id​​ 编译为 ​​String arg0​​,然而Java8中新增了这样的一个特性,你可以在编译的时候设定保留参数名称。

怎么做:

一、手工Java编译器编译

使用命令:​​javac -parameters xxxxx.java​​,编译得到的class文件将保留参数名称。

二、开发工具怎么配置

以 Eclipse(好多工具内核都是Eclipse) 为例,设定方法如下图(我是STS截图):

Windows > Preferences > Java > Compiler > (勾选)Store infomation about method parameters (usable via reflection)

Java编译保留方法参数名称_eclipse

Idea 是:File > Settings > Build, Execution, Deployment > Compiler > Java Compiler > Additional command line parameters: (输入框中填写 ​​-parameters​​)

三、Maven 编译怎么配置

上面的方法都可以没有,也不能没有 maven 啊,这个才是重点,其实知道第一点后就应该知道 maven 插件怎么配置了,如下:

<!-- Compile -->
<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>
<compilerArg>-parameters</compilerArg>
</compilerArgs>
</configuration>
</plugin>

同理也是添加了编译参数 ​​-parameter​

(END)



举报

相关推荐

0 条评论