还在手写 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 让你的代码更简洁!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大厂面试:一个四年多经验程序员的BAT面
- 下一篇: c++ 确定百分比_【文献笔记】JIMF