這篇文章主要介紹“Java的Lombok使用方法是什么”,在日常操作中,相信很多人在Java的Lombok使用方法是什么問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Java的Lombok使用方法是什么”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、微信平臺(tái)小程序開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了尉氏免費(fèi)建站歡迎大家使用!前言
在項(xiàng)目開(kāi)發(fā)過(guò)程中,經(jīng)常會(huì)涉及到一些調(diào)整很少但又必不可少的環(huán)節(jié),比如實(shí)體類的Getter/Setter方法,ToString方法等。這時(shí)可以使用Lombok來(lái)避免這種重復(fù)的操作,減少非核心代碼的臃腫,提高編碼效率。
如何在IntelliJ IDEA中引入Lombok
安裝Lombok 插件(否則在調(diào)用setter/getter方法時(shí)IDE會(huì)提示報(bào)錯(cuò)): File -> Settings -> Plugins 搜索Lombok Plugin完成安裝。
pom.xml中引入lombok依賴(其中<scope>provided</scope>表示只在編譯、測(cè)試階段依賴該jar,運(yùn)行階段不依賴(如運(yùn)行容器中已包含了該jar,則置為provided避免jar沖突),默認(rèn)<scope>compile</scope>則表示在編譯、測(cè)試、運(yùn)行階段都依賴):
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.20</version><scope>provided</scope></dependency>
Lombok注解用途
@Getter/@Setter
為字段生成Getter和Setter方法,可以注解到字段或者類上(注解在類上會(huì)為類中所有字段生成Getter和Setter方法)。默認(rèn)是public類型的,如果需要的話可以修改方法的訪問(wèn)級(jí)別: @Getter(AccessLevel.PROTECTED)
Lombok中的注解一般都會(huì)包含一個(gè)無(wú)參構(gòu)造函數(shù)注解@NoArgsConstructor(用于生成無(wú)參構(gòu)造函數(shù)) ,所以還會(huì)額外生成一個(gè)無(wú)參構(gòu)造函數(shù)
@NonNull
調(diào)用字段的setter方法時(shí),如果傳的參數(shù)為null,則會(huì)拋出空異常NullPointerException,生成setter方法時(shí)會(huì)檢查參數(shù)是否為空
@NoArgsConstructor
生成一個(gè)無(wú)參構(gòu)造方法。當(dāng)類中有final字段沒(méi)有被初始化時(shí),編譯器會(huì)報(bào)錯(cuò),此時(shí)可用@NoArgsConstructor(force = true),然后就會(huì)為沒(méi)有初始化的final字段設(shè)置默認(rèn)值 0 / false / null, 這樣編譯器就不會(huì)報(bào)錯(cuò)。對(duì)于具有約束的字段(例如@NonNull字段),不會(huì)生成檢查或分配,因此請(qǐng)注意,正確初始化這些字段之前,這些約束無(wú)效。
@RequiredArgsConstructor
生成構(gòu)造方法(可能帶參數(shù)也可能不帶參數(shù)),如果帶參數(shù),這參數(shù)只能是以final修飾的未經(jīng)初始化的字段,或者是以@NonNull注解的未經(jīng)初始化的字段。
@RequiredArgsConstructor(staticName = “of”)會(huì)生成一個(gè)of()的靜態(tài)方法,并把構(gòu)造方法設(shè)置為私有的
@AllArgsConstructor
生成一個(gè)全參數(shù)的構(gòu)造方法
@ToString
生成toString()方法,默認(rèn)情況下它會(huì)按順序(以逗號(hào)分隔)打印你的類名稱以及每個(gè)字段。可以這樣設(shè)置不包含哪些字段,可以指定一個(gè)也可以指定多個(gè)@ToString(exclude = “id”) / @ToString(exclude = {“id”,”name”}) 。如果繼承的有父類的話,可以設(shè)置callSuper 讓其調(diào)用父類的toString()方法,例如:@ToString(callSuper = true)
@EqualsAndHashCode
生成hashCode()和equals()方法,默認(rèn)情況下,它將使用所有非靜態(tài),非transient字段。但可以通過(guò)在可選的exclude參數(shù)中來(lái)排除更多字段?;蛘撸ㄟ^(guò)在of參數(shù)中命名它們來(lái)準(zhǔn)確指定希望使用哪些字段。
// exclude 排除字段 @EqualsAndHashCode(exclude = {“password”, “salt”})// of 指定要包含的字段 @EqualsAndHashCode(of = {“id”, “phone”, “password”})
@Data
@Data 包含了 @ToString、@EqualsAndHashCode、@Getter / @Setter和@RequiredArgsConstructor的功能
@Value
@Value 將字段都變成不可變類型:使用final修飾, 同時(shí)還包含@ToString、@EqualsAndHashCode、
@AllArgsConstructor 、@Getter(注意只有Getter沒(méi)有Setter)
@Log
生成log對(duì)象,用于記錄日志,可以通過(guò)topic屬性來(lái)設(shè)置getLogger(String name)方法的參數(shù) 例如 @Log4j(topic = “com.xxx.service.xxx”),默認(rèn)是類的全限定名,即 類名.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 修飾方法,來(lái)捕獲異常, 默認(rèn)捕獲的是Throwable異常,也可以設(shè)置要捕獲的異常:@SneakyThrows(InterruptedException.class)
@Synchronized
給方法加上同步鎖
@Cleanup
主要用來(lái)修飾 IO 流相關(guān)類, 會(huì)在 finally 代碼塊中對(duì)該資源進(jìn)行 close();
@Getter(lazy = true)
標(biāo)注字段為懶加載字段,懶加載字段在創(chuàng)建對(duì)象時(shí)不會(huì)進(jìn)行初始化,而是在第一次訪問(wèn)的時(shí)候才會(huì)初始化,后面再次訪問(wèn)也不會(huì)重復(fù)初始化
@Wither
提供了給final字段賦值的一種方法
@Builder
為你的類生成復(fù)雜的構(gòu)建器API。
@Delegate
為L(zhǎng)ist類型的字段生成一大堆常用的方法,其實(shí)這些方法都是List中的方法 。注意:一個(gè)類中只能使用一個(gè)@Delegate注解,因?yàn)槭褂枚鄠€(gè)會(huì)生成多個(gè)size()方法,從而會(huì)編譯報(bào)錯(cuò)。
到此,關(guān)于“Java的Lombok使用方法是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
分享文章:Java的Lombok使用方法是什么-創(chuàng)新互聯(lián)
文章轉(zhuǎn)載:http://jinyejixie.com/article26/dehejg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、云服務(wù)器、Google、關(guān)鍵詞優(yōu)化、手機(jī)網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容