中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java的Lombok使用方法是什么

發布時間:2021-11-19 16:04:48 來源:億速云 閱讀:132 作者:iii 欄目:編程語言

這篇文章主要介紹“Java的Lombok使用方法是什么”,在日常操作中,相信很多人在Java的Lombok使用方法是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java的Lombok使用方法是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

前言

在項目開發過程中,經常會涉及到一些調整很少但又必不可少的環節,比如實體類的Getter/Setter方法,ToString方法等。這時可以使用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

@Logprivate static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LogExample.class.getName());@Log4jprivate static final Logger log = org.apache.log4j.Logger.Logger.getLogger(UserService.class);@Log4j2private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class);@Slf4jprivate static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);@XSlf4jprivate static final org.slf4j.ext.XLogger log = org.slf4j.ext.XLoggerFactory.getXLogger(LogExample.class);@CommonsLogprivate static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(LogExample.class);@JBossLogprivate 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使用方法是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沙洋县| 乐至县| 丰镇市| 门源| 迁西县| 肃宁县| 拉萨市| 潮州市| 淳化县| 醴陵市| 南宫市| 临沂市| 边坝县| 古田县| 鹤峰县| 皋兰县| 合肥市| 东乡县| 泌阳县| 宜州市| 苏尼特右旗| 二连浩特市| 慈溪市| 杭锦旗| 邓州市| 五大连池市| 海丰县| 偃师市| 乌兰察布市| 平遥县| 读书| 新巴尔虎左旗| 桃园县| 西充县| 沈阳市| 盈江县| 平顶山市| 阜平县| 高淳县| 江达县| 大港区|