zoukankan      html  css  js  c++  java
  • @Data注解 与 lombok

      在IDEA中使用了注解@Getter,但是发现在右侧出现private field 'xxx' is never assigned警告,加上一个@Setter就可以解决了。然后,感觉真的是多此一举,直接使用@Data就可以了。

      现在对lombok中常用的几个注解做一些说明。

    1.类上加上@Data后的效果

      可以发现,已经存在set与get方法了。

      

    2.一些常用的注解

      @Data : 注在类上,提供类的get、set、equals、hashCode、canEqual、toString方法
      @AllArgsConstructor : 注在类上,提供类的全参构造
      @NoArgsConstructor : 注在类上,提供类的无参构造
      @Setter : 注在属性上,提供 set 方法
      @Getter : 注在属性上,提供 get 方法
      @EqualsAndHashCode : 注在类上,提供对应的 equals 和 hashCode 方法
      @Log4j/@Slf4j : 注在类上,提供对应的 Logger 对象,变量名为 log


    3.原理

      Lombok本质上就是一个实现了“JSR 269 API”的程序。在使用javac的过程中,它产生作用的具体流程如下:

    • javac对源代码进行分析,生成了一棵抽象语法树(AST)
    • 运行过程中调用实现了“JSR 269 API”的Lombok程序
    • 此时Lombok就对第一步骤得到的AST进行处理,找到@Data注解所在类对应的语法树(AST),然后修改该语法树(AST),增加getter和setter方法定义的相应树节点
    • javac使用修改后的抽象语法树(AST)生成字节码文件,即给class增加新的节点(代码块)
  • 相关阅读:
    支付宝面试题(顶级互联网公司面试题系列)
    反应器模式 vs 生产者消费者模式
    反应器模式 vs 观察者模式
    Future Promise 模式(netty源码9)
    Pipeline inbound(netty源码7)
    Pipeline outbound
    Pipeline(netty源码)
    顺丰面试题(2018 顶级互联网公司面试题系列)
    【转】 linux编程之GDB调试
    【转】 linux内存管理
  • 原文地址:https://www.cnblogs.com/juncaoit/p/12361592.html
Copyright © 2011-2022 走看看