日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

还在手写 Getter/Setter 方法吗?Lombok 让你的代码更简洁!

發布時間:2025/3/15 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 还在手写 Getter/Setter 方法吗?Lombok 让你的代码更简洁! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

以下是文章大綱:

Lombok 是什么?

官網:https://projectlombok.org/

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

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

Lombok 引入

1、POM 中引入依賴

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

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

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

系統中如果有引入無需重復引入。

2、IDE 中安裝插件

為什么裝插件?

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

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 找方法調用處也可以直接鎖定到字段上,以前要點兩下才能看到字段明細信息,使用 Lombok 點一下就能達到效果。

Lombok 使用注意

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

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

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

  • 其他注解酌情使用。

Lombok 原理

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

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

  • javac 對源代碼進行分析,生成一棵抽象語法樹(AST)

  • 運行過程中調用實現了“JSR 269 API”的 Lombok 程序

  • Lombok 對第一步驟得到的 AST 進行處理,找到 @Getter @Setter 注解所在類對應的語法樹(AST)

  • Lombok 修改該語法樹(AST),增加 getter() 和 setter() 方法定義的相應樹節點

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

  • 有道無術,術可成;有術無道,止于術

    歡迎大家關注Java之道公眾號

    好文章,我在看??

    總結

    以上是生活随笔為你收集整理的还在手写 Getter/Setter 方法吗?Lombok 让你的代码更简洁!的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。