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)

发布了378 篇原创文章 · 获赞 1419 · 访问量 632万+

猜你喜欢

转载自blog.csdn.net/catoop/article/details/102855248
今日推荐