久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

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

 520jefferson 2021-11-11

以下是文章大綱:

圖片

作者:白色蝸牛 

公眾號:蝸?;ヂ?lián)網(wǎng)

Lombok 是什么?

官網(wǎng):https:///

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

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

Lombok 引入

1,、POM 中引入依賴

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

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

<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <version>1.18.16</version>
</dependency>

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

2,、IDE 中安裝插件

為什么裝插件?

  • 因為 Lombok 的引入后,,java 文件使用 javac 編譯成的字節(jié)碼文件中就會包含 getter 和 setter 函數(shù),,但是源代碼中找不到定義,IDE 會認為這是錯誤,,因此需要安裝一個 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)用處也可以直接鎖定到字段上,,以前要點兩下才能看到字段明細信息,,使用 Lombok 點一下就能達到效果。

圖片

Lombok 使用注意

  • 不建議直接使用 @Data 這種大而全的方式覆蓋太多的簡化場景,。
  • toString 場景不建議使用 Lombok 的,,建議使用系統(tǒng)自定義 ToString 里的方法。
  • 對外包考慮到接入方也需要引入依賴,,如果擔心副作用,,可以不引入。
  • 其他注解酌情使用,。

Lombok 原理

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

圖片

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

  1. javac 對源代碼進行分析,生成一棵抽象語法樹(AST)
  2. 運行過程中調(diào)用實現(xiàn)了“JSR 269 API”的 Lombok 程序
  3. Lombok 對第一步驟得到的 AST 進行處理,,找到 @Getter @Setter 注解所在類對應(yīng)的語法樹(AST)
  4. Lombok 修改該語法樹(AST),,增加 getter()setter() 方法定義的相應(yīng)樹節(jié)點
  5. javac 使用修改后的抽象語法樹(AST)生成字節(jié)碼文件,即給 class 增加新的節(jié)點(代碼塊)

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導購買等信息,,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多