您好,登錄后才能下訂單哦!
如何在Java中使用Lombok?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
如何在IntelliJ IDEA中引入Lombok
安裝Lombok 插件(否則在調用setter/getter方法時IDE會提示報錯): File -> Settings -> Plugins 搜索Lombok Plugin完成安裝。
pom.xml中引入lombok依賴(其中<scope>provided</scope>表示只在編譯、測試階段依賴該jar,運行階段不依賴(如運行容器中已包含了該jar,則置為provided避免jar沖突),默認<scope>compile</scope>則表示在編譯、測試、運行階段都依賴):
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.20</version> <scope>provided</scope> </dependency>
Lombok注解用途
@Getter/@Setter
為字段生成Getter和Setter方法,可以注解到字段或者類上(注解在類上會為類中所有字段生成Getter和Setter方法)。默認是public類型的,如果需要的話可以修改方法的訪問級別: @Getter(AccessLevel.PROTECTED)
Lombok中的注解一般都會包含一個無參構造函數注解@NoArgsConstructor(用于生成無參構造函數) ,所以還會額外生成一個無參構造函數
@NonNull
調用字段的setter方法時,如果傳的參數為null,則會拋出空異常NullPointerException,生成setter方法時會檢查參數是否為空
@NoArgsConstructor
生成一個無參構造方法。當類中有final字段沒有被初始化時,編譯器會報錯,此時可用@NoArgsConstructor(force = true),然后就會為沒有初始化的final字段設置默認值 0 / false / null, 這樣編譯器就不會報錯。對于具有約束的字段(例如@NonNull字段),不會生成檢查或分配,因此請注意,正確初始化這些字段之前,這些約束無效。
@RequiredArgsConstructor
生成構造方法(可能帶參數也可能不帶參數),如果帶參數,這參數只能是以final修飾的未經初始化的字段,或者是以@NonNull注解的未經初始化的字段。
@RequiredArgsConstructor(staticName = “of”)會生成一個of()的靜態方法,并把構造方法設置為私有的
@AllArgsConstructor
生成一個全參數的構造方法
@ToString
生成toString()方法,默認情況下它會按順序(以逗號分隔)打印你的類名稱以及每個字段。可以這樣設置不包含哪些字段,可以指定一個也可以指定多個@ToString(exclude = “id”) / @ToString(exclude = {“id”,”name”}) 。如果繼承的有父類的話,可以設置callSuper 讓其調用父類的toString()方法,例如:@ToString(callSuper = true)
@EqualsAndHashCode
生成hashCode()和equals()方法,默認情況下,它將使用所有非靜態,非transient字段。但可以通過在可選的exclude參數中來排除更多字段。或者,通過在of參數中命名它們來準確指定希望使用哪些字段。
// exclude 排除字段 @EqualsAndHashCode(exclude = {“password”, “salt”}) // of 指定要包含的字段 @EqualsAndHashCode(of = {“id”, “phone”, “password”})
@Data
@Data 包含了 @ToString、@EqualsAndHashCode、@Getter / @Setter和@RequiredArgsConstructor的功能
@Value
@Value 將字段都變成不可變類型:使用final修飾, 同時還包含@ToString、@EqualsAndHashCode、
@AllArgsConstructor 、@Getter(注意只有Getter沒有Setter)
@Log
生成log對象,用于記錄日志,可以通過topic屬性來設置getLogger(String name)方法的參數 例如 @Log4j(topic = “com.xxx.service.xxx”),默認是類的全限定名,即 類名.class,log支持以下幾種:
@Log java.util.logging.Logger
@Log4j org.apache.log4j.Logger
@Log4j2 org.apache.logging.log4j.Logger
@Slf4j org.slf4j.Logger
@XSlf4j org.slf4j.ext.XLogger
@CommonsLog org.apache.commons.logging.Log
@JBossLog org.jboss.logging.Logger
@Log private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LogExample.class.getName()); @Log4j private static final Logger log = org.apache.log4j.Logger.Logger.getLogger(UserService.class); @Log4j2 private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class); @Slf4j private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class); @XSlf4j private static final org.slf4j.ext.XLogger log = org.slf4j.ext.XLoggerFactory.getXLogger(LogExample.class); @CommonsLog private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(LogExample.class); @JBossLog private static final org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger(LogExample.class);
@SneakyThrows
使用try catch 修飾方法,來捕獲異常, 默認捕獲的是Throwable異常,也可以設置要捕獲的異常:@SneakyThrows(InterruptedException.class)
@Synchronized
給方法加上同步鎖
@Cleanup
主要用來修飾 IO 流相關類, 會在 finally 代碼塊中對該資源進行 close();
@Getter(lazy = true)
標注字段為懶加載字段,懶加載字段在創建對象時不會進行初始化,而是在第一次訪問的時候才會初始化,后面再次訪問也不會重復初始化
@Wither
提供了給final字段賦值的一種方法
@Builder
為你的類生成復雜的構建器API。
@Delegate
為List類型的字段生成一大堆常用的方法,其實這些方法都是List中的方法 。注意:一個類中只能使用一個@Delegate注解,因為使用多個會生成多個size()方法,從而會編譯報錯。
關于如何在Java中使用Lombok問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。