Lombok 看這篇就夠了

前提

自從進公司實習後,項目代碼中能用 Lombok 的都用了,畢竟這麼好的輪子要充分利用好。也可以減少一些 get/set/toString 方法的編寫,雖說 IDEA 的插件可以自動生成 get/set/toString 方法,但是使用 Lombok 可以讓代碼更簡潔。

下面看看如何在 IDEA 中如何安裝 Lombok:

安裝

打開 IDEA 的 Settings 面板,並選擇 Plugins 選項,然後點擊 “Browse repositories”

在輸入框輸入”lombok”,得到搜索結果,點擊安裝,然後安裝提示重啓 IDEA,安裝成功;

 

 

引入依賴

在自己的項目裏添加 lombok 的編譯支持,在 pom 文件裏面添加 dependency

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.18</version>
    <scope>provided</scope>
</dependency>

 

怎麼使用?

在實體類上引入相關的註解就行:

 

 

有哪些註解?

  • @Data
  • @Setter
  • @Getter
  • @Log4j
  • @AllArgsConstructor
  • @NoArgsConstructor
  • @EqualsAndHashCode
  • @NonNull
  • @Cleanup
  • @ToString
  • @RequiredArgsConstructor
  • @Value
  • @SneakyThrows
  • @Synchronized

註解詳解

@Data

註解在  上;提供類所有屬性的 get 和 set 方法,此外還提供了equals、canEqual、hashCode、toString 方法。

 

 

@Setter

註解在 屬性 上;爲單個屬性提供 set 方法; 註解在  上,爲該類所有的屬性提供 set 方法, 都提供默認構造方法。

 

 

 

 

@Getter

註解在 屬性 上;爲單個屬性提供 get 方法; 註解在  上,爲該類所有的屬性提供 get 方法,都提供默認構造方法。

 

 

 

 

@Log4j

註解在  上;爲類提供一個 屬性名爲 log 的 log4j 日誌對象,提供默認構造方法。

 

 

@AllArgsConstructor

註解在  上;爲類提供一個全參的構造方法,加了這個註解後,類中不提供默認構造方法了。

 

 

@NoArgsConstructor

註解在  上;爲類提供一個無參的構造方法。

 

 

@EqualsAndHashCode

註解在  上, 可以生成 equals、canEqual、hashCode 方法。

 

 

@NonNull

註解在 屬性 上,會自動產生一個關於此參數的非空檢查,如果參數爲空,則拋出一個空指針異常,也會有一個默認的無參構造方法。

 

 

@Cleanup

這個註解用在 變量 前面,可以保證此變量代表的資源會被自動關閉,默認是調用資源的 close() 方法,如果該資源有其它關閉方法,可使用 @Cleanup(“methodName”) 來指定要調用的方法,也會生成默認的構造方法

 

 

@ToString

這個註解用在  上,可以生成所有參數的 toString 方法,還會生成默認的構造方法。

 

 

@RequiredArgsConstructor

這個註解用在  上,使用類中所有帶有 @NonNull 註解的或者帶有 final 修飾的成員變量生成對應的構造方法。

 

 

@Value

這個註解用在  上,會生成含所有參數的構造方法,get 方法,此外還提供了equals、hashCode、toString 方法。

 

 

@SneakyThrows

這個註解用在 方法 上,可以將方法中的代碼用 try-catch 語句包裹起來,捕獲異常並在 catch 中用 Lombok.sneakyThrow(e) 把異常拋出,可以使用 @SneakyThrows(Exception.class) 的形式指定拋出哪種異常,也會生成默認的構造方法。

 

 

@Synchronized

這個註解用在 類方法 或者 實例方法 上,效果和 synchronized 關鍵字相同,區別在於鎖對象不同,對於類方法和實例方法,synchronized 關鍵字的鎖對象分別是類的 class 對象和 this 對象,而 @Synchronized 的鎖對象分別是 私有靜態 final 對象 lock 和 私有 final 對象 lock,當然,也可以自己指定鎖對象,此外也提供默認的構造方法。

 

 

總結

以上註解可根據需要一起搭配使用!

雖說輪子好,但是我們不僅要知其然,也要知其所以然!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章