最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java編碼輔助工具Lombok用法詳解

 更新時(shí)間:2019年06月25日 09:53:39   作者:空山新雨  
這篇文章主要介紹了Java編碼輔助工具Lombok用法詳解,可以使用Lombok來(lái)避免這種重復(fù)的操作,減少非核心代碼的臃腫,提高編碼效率,需要的朋友可以參考下

前言

在項(xiàng)目開發(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字段沒有被初始化時(shí),編譯器會(huì)報(bào)錯(cuò),此時(shí)可用@NoArgsConstructor(force = true),然后就會(huì)為沒有初始化的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沒有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
@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 修飾方法,來(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ò)。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring純注解配置實(shí)現(xiàn)代碼示例解析

    Spring純注解配置實(shí)現(xiàn)代碼示例解析

    這篇文章主要介紹了Spring純注解配置實(shí)現(xiàn)代碼示例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • maven依賴的version聲明控制方式

    maven依賴的version聲明控制方式

    這篇文章主要介紹了maven依賴的version聲明控制方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • jsp+dao+bean+servlet(MVC模式)實(shí)現(xiàn)簡(jiǎn)單用戶登錄和注冊(cè)頁(yè)面

    jsp+dao+bean+servlet(MVC模式)實(shí)現(xiàn)簡(jiǎn)單用戶登錄和注冊(cè)頁(yè)面

    這篇文章主要介紹了jsp+dao+bean+servlet(MVC模式)實(shí)現(xiàn)簡(jiǎn)單用戶登錄和注冊(cè)頁(yè)面,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • java類加載相關(guān)知識(shí)總結(jié)

    java類加載相關(guān)知識(shí)總結(jié)

    今天帶大家復(fù)習(xí)Java基礎(chǔ)知識(shí),文章對(duì)Java類加載做了詳細(xì)介紹,對(duì)正在學(xué)習(xí)java的小伙伴很有幫助,需要的朋友可以參考下
    2021-05-05
  • JavaMail入門教程之發(fā)送郵件(3)

    JavaMail入門教程之發(fā)送郵件(3)

    這篇文章主要為大家詳細(xì)介紹了JavaMail入門教程之發(fā)送郵件的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Mybatis-Plus樂觀鎖配置流程

    Mybatis-Plus樂觀鎖配置流程

    這篇文章主要介紹了Mybatis-Plus樂觀鎖配置使用流程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作有一定的參考學(xué)習(xí)價(jià)值,感興趣的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2024-01-01
  • 使用JavaMail發(fā)送郵件保證成功的方法

    使用JavaMail發(fā)送郵件保證成功的方法

    JavaMail是利用現(xiàn)有的郵件賬戶發(fā)送郵件的工具,使用過(guò)JavaMail的api發(fā)送郵件的人可能會(huì)有這樣一個(gè)疑惑:我如何知道我調(diào)用該api發(fā)送的郵件是否成功呢?那么通過(guò)下面這篇文章大家一起來(lái)看看使用JavaMail保證郵件發(fā)送成功的方法,有需要的朋友們可以參考借鑒。
    2016-11-11
  • 基于java集合中的一些易混淆的知識(shí)點(diǎn)(詳解)

    基于java集合中的一些易混淆的知識(shí)點(diǎn)(詳解)

    下面小編就為大家?guī)?lái)一篇基于java集合中的一些易混淆的知識(shí)點(diǎn)(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-09-09
  • Spring MVC 請(qǐng)求參數(shù)綁定實(shí)現(xiàn)方式

    Spring MVC 請(qǐng)求參數(shù)綁定實(shí)現(xiàn)方式

    Spring MVC 是一個(gè)用于構(gòu)建 Web 應(yīng)用程序的框架,它提供了一種方便的方式來(lái)處理 HTTP 請(qǐng)求和響應(yīng),Spring MVC 提供了多種方式來(lái)實(shí)現(xiàn)請(qǐng)求參數(shù)綁定,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友跟隨小編一起看看吧
    2023-09-09
  • IntelliJ IDEA右鍵文件夾沒有Java Class文件的原因及解決方法

    IntelliJ IDEA右鍵文件夾沒有Java Class文件的原因及解決方法

    這篇文章主要介紹了IntelliJ IDEA右鍵文件夾沒有Java Class文件的原因及解決方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09

最新評(píng)論

合阳县| 游戏| 繁昌县| 朝阳市| 沭阳县| 监利县| 晋宁县| 平定县| 宁河县| 峨边| 西昌市| 蓬莱市| 黑山县| 清原| 高密市| 吉木萨尔县| 江北区| 北碚区| 兰溪市| 武威市| 河池市| 益阳市| 台东县| 瑞昌市| 贡嘎县| 杨浦区| 罗定市| 关岭| 上饶市| 丘北县| 搜索| 建阳市| 夏津县| 龙陵县| 桑日县| 车险| 靖江市| 宝清县| 大余县| 鹿邑县| 吐鲁番市|