前提
注意:此问题发生在jdk1.8 ,jdk1.8以下不适用
jdk中新增-parameters参数,开启此参数可以将编译后的class文件保留原码中的参数名
保留参数名方便反射的时候判断参数,比如Mybatis中mapper中的参数,可以不加@Param显性指定
不加-parameters参数,编译结果:

填加-parameters参数,编译结果:

Idea增加编译参数
设置路径:
win版本
File->Settings->Build,Execution,Deployment->Java Compiler下的Additional command line parameters选项中添加-parameters
Mac版本
IntelliJIDEA->Preference…->Build,Execution,Deployment->Java Compiler下的Additional command line parameters选项中添加-parameters

设置界面:

新版mac版idea没有Preference选项,可以通过如下设置,记得重启
或者在idea 启动的时候设置

设置完毕后如果手动编译不生效,记得菜单或者右键 bulid -> rebulid project
Maven增加编译参数
增加插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<!-- 注意以下两项的参数配置 -->
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
<!-- 编译参数写在arg内 -->
<compilerArgs>
<arg>-parameters</arg>
</compilerArgs>
</configuration>
</plugin>
如此编译后即可保留参数名

本文介绍如何在JDK1.8中通过-parameters参数保留编译后的class文件中的参数名,这对于使用反射机制的框架如Mybatis非常有用。文章详细说明了在Idea及Maven中设置此参数的方法。
8017

被折叠的 条评论
为什么被折叠?



