亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Lombok同時使?@Data和@Builder踩坑總結

 更新時間:2022年05月30日 11:32:07   作者:樹洞君?  
這篇文章主要介紹了Lombok同時使?@Data和@Builder踩坑總結,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值需要的小伙伴可以參考一下,希望對你的學習有所幫助

問題背景

Lombok使? 同時使?@Data和@Builder ,構建無參構造器報錯!編譯不通過。如下圖:

Lombok @Data和@Builder分別單獨分析用法

Lombok使?@Data可以?成?參構造和類??所有屬性的getter/setter?法??梢院喕覀兇a的開發(fā)。(需要安裝Lombok插件和引?Lombok依賴)。

例如下?的?個實體類,引?Lombok后,可以?動?成GET/SET?法和?參構造函數。

 編譯后的class為:可以看到不僅幫我們生成了get和set ,同時也有默認的無參構造器

那么怎么自動生成有參構造器呢?使用@Builder注解,將會幫助我們?成全屬性的構造?法。

編譯后的class為:可以看到 已經幫我們構建好了全屬性的構造方法,但是如果值只引用@Builder注解是無法生成get和set的。

但是如果同時使?@Data和@Builder的話,可以看出盡管?成了GET/SET?法,但是?參構造?法沒有了,這顯然是不能接受的,因為很多框架都會調??參構造去創(chuàng)建對象。

編譯后的class: 

我們嘗試在Tet1類,?動添加?參構造?法。編譯發(fā)現報錯不通過:

解決方法

Lombok同時使?@Data和@Builder的時候,如果要?成?參構造,需要在代碼???動引?注解@Tolerate,讓Lombok在?成類的時候,對指定的構造函數不感知。

Lombok原理

Java的編譯分為以下?個階段:

解析與填充符號表->注解處理->分析與字節(jié)碼?成->?成?進制class?件。

  • Lombok 使?的是 JDK 6 實現的 JSR 269: Pluggable Annotation Processing API (編譯期的注解處理器),它是在編譯期時把 Lombok 的注解代碼,轉換為常規(guī)的 Java ?法?實現注?。

  • 在編譯期階段,當 Java 源碼被抽象成語法樹 (AST) 之后,Lombok 會根據??的注解處理器動態(tài)的修改AST,增加新的代碼 (節(jié)點),在這?切執(zhí)?之后,再通過分析?成了最終的字節(jié)碼 (.class) ?件,這就是Lombok 的執(zhí)?原理。

可以借助注解處理器實現?個簡單的 Setter,我們的實現步驟是:

  • ?定義?個注解標簽接?,并實現?個?定義的注解處理器;
  • 利? tools.jar 的 javac api 處理 AST (抽象語法樹)3. 使??定義的注解處理器編譯代碼。

1.定義?定義注解和注解處理器

?先創(chuàng)建?個 MySetter.java ?定義?個注解,代碼如下:

再實現?個?定義的注解處理器,代碼如下:

測試類如下:

2.對注解處理器進?編譯,隨后使?注解處理器對類進?編譯

?先需要先對注解處理器進?編譯(javac -cp ?于引?第三?jar包進?編譯)

然后使?注解處理器對這個Person測試類進?編譯:

這時候再看?成的Person.class,可以發(fā)現Setter?法已經?成了:

總結

當然盡管測試類已經?成Setter?法,但是因為是在編譯時期?成的,因此我們在開發(fā)的時候是沒法直接調?Setter?法的,因此Lombok提供了插件機制,?便我們在開發(fā)的時候可以直接去調?Lombok的特性。

到此這篇關于Lombok同時使?@Data和@Builder踩坑總結的文章就介紹到這了,更多相關Lombok @Data和@Builder內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • java Collection 之List學習介紹

    java Collection 之List學習介紹

    本篇文章小編為大家介紹,java Collection 之List學習介紹。需要的朋友參考下
    2013-04-04
  • Serializable接口的作用_動力節(jié)點Java學院整理

    Serializable接口的作用_動力節(jié)點Java學院整理

    這篇文章主要為大家詳細介紹了java中Serializable接口的作用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • logstash將mysql數據同步到elasticsearch方法詳解

    logstash將mysql數據同步到elasticsearch方法詳解

    這篇文章主要為大家介紹了logstash將mysql數據同步到elasticsearch方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • java設計模式之觀察者模式學習

    java設計模式之觀察者模式學習

    這篇文章主要為大家詳細介紹了java設計模式之觀察者模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • java中構造方法和普通方法的區(qū)別說明

    java中構造方法和普通方法的區(qū)別說明

    這篇文章主要介紹了java中構造方法和普通方法的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • @Transactional解讀(作用、失效場景與解決方式)

    @Transactional解讀(作用、失效場景與解決方式)

    這篇文章主要介紹了關于@Transactional作用、失效場景與解決方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 淺談java中OO的概念和設計原則(必看)

    淺談java中OO的概念和設計原則(必看)

    下面小編就為大家?guī)硪黄獪\談java中OO的概念和設計原則(必看)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • 使用Spring事件監(jiān)聽機制實現跨模塊調用的步驟詳解

    使用Spring事件監(jiān)聽機制實現跨模塊調用的步驟詳解

    Spring 事件監(jiān)聽機制是 Spring 框架中用于在應用程序的不同組件之間進行通信的一種機制,Spring 事件監(jiān)聽機制基于觀察者設計模式,使得應用程序的各個部分可以解耦,提高模塊化和可維護性,本文給大家介紹了使用Spring事件監(jiān)聽機制實現跨模塊調用,需要的朋友可以參考下
    2024-06-06
  • SpringBoot應用監(jiān)控Actuator使用隱患及解決方案

    SpringBoot應用監(jiān)控Actuator使用隱患及解決方案

    SpringBoot的Actuator 模塊提供了生產級別的功能,比如健康檢查,審計,指標收集,HTTP 跟蹤等,幫助我們監(jiān)控和管理Spring Boot 應用,本文將給大家介紹SpringBoot應用監(jiān)控Actuator使用隱患及解決方案,需要的朋友可以參考下
    2024-07-07
  • java多線程應用實現方法

    java多線程應用實現方法

    以前沒有寫筆記的習慣,現在慢慢的發(fā)現及時總結是多么的重要了,呵呵。雖然才大二,但是也快要畢業(yè)了,要加油
    2012-11-11

最新評論