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