@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增加新的節點(代碼塊)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM