Java编译保留方法参数名称

本文所述内容为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)
STS截图
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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

catoop

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值