Lombok項目是一個Java庫,它會自動插入編輯器和構建工具中,Lombok提供了一組有用的註釋,用來消除Java類中的大量樣板代碼。僅五個字符(@Data)就可以替換數百行代碼從而產生乾淨,簡潔且易於維護的Java類。
官網地址:https://projectlombok.org/
一、安裝插件
這裏以Intellij IDE(Mac版)爲例,依次打開 Preferences -> Plugins -> 搜索Lombok插件安裝。
我這裏已經安裝了,所以是update。
二、添加依賴
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.6</version>
</dependency>
三、val和val的使用
val、val關鍵字在定義一個變量時候不需要指定它的類型,它的類型由初始化的表達式推斷。
(1)var 所聲明的變量是非 final 的。
var example = new ArrayList<String>();
example.add("Hello, World!");
編譯後的代碼:
ArrayList<String> example = new ArrayList<String>();
example.add("Hello, World!");
(2)val 所聲明的變量是 final 的。
val foo = example.get(0);
編譯後的代碼:
final String foo = example.get(0);
四、Lombok內容概覽
- var 所聲明的變量是非 final 的。
- val 所聲明的變量是 final 的。
- @Getter 註解在屬性(類)上,爲屬性(所有非靜態成員變量)提供 get() 方法
- @Setter 註解在屬性(類)上,爲屬性(所有非靜態成員變量)提供 set() 方法
- @Accessors 注註解在屬性(類)上,配置getter和setter方法的生成結果,分別有三個屬性:fluent、chain、prefix
- @ToString 該註解的作用是爲類自動生成 toString() 方法
- @EqualsAndHashCode 爲對象字段自動生成 hashCode() 和 equals() 實現
- @AllArgsConstructor、@RequiredArgsConstructor、@NoArgsConstructor 顧名思義,爲類自動生成對應參數的構造器
- @Data 註解在類上,自動爲所有字段添加 @ToString、@EqualsAndHashCode、@Getter。爲非 final 字段添加 @Setter 和 @RequiredArgsConstructor。本質上相當於幾個註解的綜合效果
- @Value 註解和 @Data 類似,區別在於它會把所有成員變量默認定義爲 private final 修飾,並且不會生成 set() 方法
- @Log、@Log4j、@Log4j2、@Slf4j、@XSlf4j、@CommonsLog、@JBossLog 註解在類上,自動爲類添加對應的日誌支持
- @NonNull 註解在方法參數上,用於自動生成空值參數檢查,自動幫助我們避免空指針
- @Cleanup 自動幫我們調用 close() 方法,作用在局部變量上,在作用域結束時會自動調用 close() 方法釋放資源,可以關閉流
- @Builder 註解在類上,被註解的類加個構造者模式
- @Synchronized 註解在類上,加個同步鎖
- @SneakyThrows 等同於 try/catch 捕獲異常
- @UtilityClass 註解在類上,所有成員都會自動標記爲static。甚至字段和內部類。
更多閱讀