<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          還在手寫 Getter/Setter 方法嗎?Lombok 讓你的代碼更簡潔!

          共 1617字,需瀏覽 4分鐘

           ·

          2021-11-15 03:24

          以下是文章大綱:

          Lombok 是什么?

          官網(wǎng):https://projectlombok.org/

          Lombok 是一個 Java 庫,使用 Lombok 可以通過簡單的注解幫助我們消除 Java 的樣板代碼,使代碼更加簡潔清晰。

          比如對于簡單的 Java 對象(POJO),很多的代碼里充斥著大量的 getter()setter() 方法,樣板代碼占用比例高,影響可讀性,引入 Lombok 只需一個注解就能達(dá)到相同效果,而且更簡潔。

          Lombok 引入

          1、POM 中引入依賴

          使用 Lombok 注解需要依賴它的庫。

          Maven 庫:https://mvnrepository.com/artifact/org.projectlombok/lombok


          ??org.projectlombok
          ??lombok
          ??1.18.16

          系統(tǒng)中如果有引入無需重復(fù)引入。

          2、IDE 中安裝插件

          為什么裝插件?

          • 因?yàn)?Lombok 的引入后,java 文件使用 javac 編譯成的字節(jié)碼文件中就會包含 getter 和 setter 函數(shù),但是源代碼中找不到定義,IDE 會認(rèn)為這是錯誤,因此需要安裝一個 Lombok 的插件,方便本地 IDE 的研發(fā)工作。

          IDEA 中安裝:

          Settings->Plugins->輸入框輸入”lombok”

          Lombok 使用

          比如要針對以下 Java 對象提供 getter()setter() 方法:

          public?class?Mountain?{

          ????private?String?name;

          ????private?String?country;
          }

          只需要在類上打 @Getter@Setter 注解。

          @Getter
          @Setter
          public?class?Mountain?{

          ????private?String?name;

          ????private?String?country;
          }

          然后用 maven 編譯一下:mvn clean compile

          使用的時候就可以正常拿到像 getCountry()setCountry() 這樣的方法。通過 IDE 找方法調(diào)用處也可以直接鎖定到字段上,以前要點(diǎn)兩下才能看到字段明細(xì)信息,使用 Lombok 點(diǎn)一下就能達(dá)到效果。

          Lombok 使用注意

          • 不建議直接使用 @Data 這種大而全的方式覆蓋太多的簡化場景。

          • toString 場景不建議使用 Lombok 的,建議使用系統(tǒng)自定義 ToString 里的方法。

          • 對外包考慮到接入方也需要引入依賴,如果擔(dān)心副作用,可以不引入。

          • 其他注解酌情使用。

          Lombok 原理

          自 JDK6 之后,javac 在執(zhí)行的時候會調(diào)用實(shí)現(xiàn)了 JSR 269 API 的程序,這樣我們就可以對編譯器做一些增強(qiáng),這時 javac 執(zhí)行的過程如下:

          Lombok 本質(zhì)上就是一個實(shí)現(xiàn)了“JSR 269 API”的程序。在使用 javac 的過程中,它產(chǎn)生作用的具體流程如下:

          1. javac 對源代碼進(jìn)行分析,生成一棵抽象語法樹(AST)

          2. 運(yùn)行過程中調(diào)用實(shí)現(xiàn)了“JSR 269 API”的 Lombok 程序

          3. Lombok 對第一步驟得到的 AST 進(jìn)行處理,找到 @Getter @Setter 注解所在類對應(yīng)的語法樹(AST)

          4. Lombok 修改該語法樹(AST),增加 getter()setter() 方法定義的相應(yīng)樹節(jié)點(diǎn)

          5. javac 使用修改后的抽象語法樹(AST)生成字節(jié)碼文件,即給 class 增加新的節(jié)點(diǎn)(代碼塊)


          有道無術(shù),術(shù)可成;有術(shù)無道,止于術(shù)

          歡迎大家關(guān)注Java之道公眾號


          好文章,我在看??

          瀏覽 55
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美精品久久99 | 久色AV射 | 国产很很鲁 | 看无码一区二区三区 | 人妻3P真实偷拍 |