JDK8新特性:编译器保留方法参数名字

JDK8新特性:编译器保留方法参数名字

在JDK8之前,java编译器会忽略我们编写代码时候设定的参数名,比如在mybatis框架中,我们可以使用@Param注解来让mybatis知道参数名。

 public interface DemoMapper {
  
     List<Card> getCardList(@Param("cardIds") List<Integer> cardIds);
  
     Card getCard(@Param("cardId")int cardId);
 }

很长一段时间里,Java程序员一直在发明不同的方式使得方法参数的名字能保留在Java字节码中,并且能够在运行时获取它们(比如Paranamer类库)。最终,在Java 8中把这个强烈要求的功能添加到语言层面(通过反射API与Parameter.getName()方法)与字节码文件(通过新版的javac的–parameters选项)中。

 public class ParameterNames {
     public static void main(String[] args) throws Exception {
         Method method = ParameterNames.class.getMethod( "main", String[].class );
         for( final Parameter parameter: method.getParameters() ) {
             System.out.println("isNamePresent: " + parameter.isNamePresent());
             System.out.println( "Parameter: " + parameter.getName() );
         }
     }
 }

parameter.isNamePresent() 查看是否开启参数。

如果是maven项目,可以配置maven编译插件:

 <plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-compiler-plugin</artifactId>
     <version>3.1</version>
     <configuration>
         <compilerArgument>-parameters</compilerArgument>
         <encoding>UTF-8</encoding>
         <source>1.8</source>
         <target>1.8</target>
     </configuration>
 </plugin>

在eclipse中可以在 Preferences -- compiler -- store information about method parameters(usable via reflection) 打开。

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

qq_22017543

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值