18WWWXXXX日本_色综合中文一一免费的日本网站_久久亚洲日韩精品一区二区三区_午夜精品久久久久久毛片_色综合久久久无码网中文_国产超碰av一区二区_精品久久久久久亚洲中文字幕_亚洲影院丰满少妇中文字幕无码_久久久91精品国产一区二区_老头把我添高潮了a片

recruit

—— 人力資源 ——

【ICT技術(shù)積累】Lombok全面詳細(xì)講解

發(fā)布時間:2020-07-27瀏覽次數(shù):

如果你使用過Lombok你可能只使用了部分功能,那么這里列舉了所有功能,你繼續(xù)閱讀能完善這方面的知識;

如果你還沒用用過,甚至不知道這是什么,那么對不起,你已經(jīng)被技術(shù)淘汰了,這里有一份詳盡的教程讓你一次性惡補(bǔ)過來;


簡介

Lombok是一個可以通過注解來幫助我們簡化消除一些必須有但顯得很臃腫的Java代碼的一種工具,通過使用對應(yīng)的注解,可以在編譯源碼的時候動態(tài)添加源碼。

例如在實(shí)體中經(jīng)常見到一堆Getter和Setter方法,這些方法是必要的不可缺少的,但是這些代碼感覺卻像是“垃圾”,看起來重復(fù)而臃腫,看起來也不美觀,也不簡潔清爽,可以使用lombok,在類上直接使用@Getter @Setter 這兩個注解,那么代碼在編譯的時候會自動幫你生成這個類下的所有字段對應(yīng)的Getter和Setter方法,實(shí)體中只有一些屬性,看起來實(shí)體類變得簡潔很多,雖然IDE可以很快的生成出來,但是生成之后的實(shí)體還是那么的臃腫,而且如果修改了字段的名稱或者字段的類型還要重新生成,比較麻煩,使用Lombok就是消除一些含金量不高卻必須要有的代碼,使程序員看起來代碼更加簡潔、清爽。


Automatic Resource Management, automatic generation of getters, setters, equals, hashCode and toString, and more!


lombok的官方地址:https://projectlombok.org/

lombok的Github地址:https://github.com/rzwitserloot/lombokLombok


plugin 插件

Intellij idea 使用Lombok需要安裝插件:Lombok plugin: Preferences —> Plugins —> 搜索 Lombok plugin — > Install

同時設(shè)置 Preferences -> Compiler -> Annotation Processors -> Enable annotation processing勾選。


圖片.png


使用示例

首先引入lombok依賴

圖片.png

1. @Getter/@Setter

為字段生成Getter和Setter方法,可以注解到字段或者類上(注解在類上會為類中的所有字段生成Getter和Setter方法),默認(rèn)是public類型的,如果需要的話可以修改方法的訪問級別。

圖片.png

結(jié)果解釋:

id字段生成了Getter&Setter,訪問修飾符是public

phone只生成了Getter方法,因?yàn)橹皇褂昧薂Getter而沒有使用@Setter, 并且訪問修飾符是protected

password 上并沒有注解,所以什么都不生成

注意:Lombok中的注解一般都會包含一個無參構(gòu)造函數(shù)注解@NoArgsConstructor(用于生成無參構(gòu)造函數(shù)的) ,所以還會額外生成一個無參構(gòu)造函數(shù)

@Getter @Setter 注解在類上,表示為類中的所有字段生成Getter&Setter方法。

圖片.png圖片.png

2. @NonNull

為字段賦值時(即調(diào)用字段的setter方法時),如果傳的參數(shù)為null,則會拋出空異常NullPointerException,生成setter方法時會對參數(shù)是否為空檢查

圖片.png

3. @NoArgsConstructor

生成一個無參構(gòu)造方法。當(dāng)類中有final字段沒有被初始化時,編譯器會報錯,此時可用@NoArgsConstructor(force = true),然后就會為沒有初始化的final字段設(shè)置默認(rèn)值 0 / false / null, 這樣編譯器就不會報錯。對于具有約束的字段(例如@NonNull字段),不會生成檢查或分配,因此請注意,正確初始化這些字段之前,這些約束無效。

圖片.png

4. @RequiredArgsConstructor

生成構(gòu)造方法(可能帶參數(shù)也可能不帶參數(shù)),如果帶參數(shù),這參數(shù)只能是以final修飾的未經(jīng)初始化的字段,或者是以@NonNull注解的未經(jīng)初始化的字段。

@RequiredArgsConstructor(staticName = “of”)會生成一個of()的靜態(tài)方法,并把構(gòu)造方法設(shè)置為私有的

圖片.png

必要的構(gòu)造函數(shù)只會生成final修飾的未經(jīng)初始化的字段或者是以@NonNull注解的未經(jīng)初始化的字段, 所以生成了public User(@NonNull String phone, Integer age)構(gòu)造函數(shù)

圖片.png

5. @AllArgsConstructor

生成一個全參數(shù)的構(gòu)造方法

圖片.png

6. @ToString

生成toString()方法,默認(rèn)情況下它會按順序(以逗號分隔)打印你的類名稱以及每個字段??梢赃@樣設(shè)置不包含哪些字段,可以指定一個也可以指定多個@ToString(exclude = “id”) / @ToString(exclude = {“id”,“name”})

如果繼承的有父類的話,可以設(shè)置callSuper 讓其調(diào)用父類的toString()方法,例如:@ToString(callSuper = true)

圖片.png

圖片.png

7. @EqualsAndHashCode

生成hashCode()和equals()方法,默認(rèn)情況下,它將使用所有非靜態(tài),非transient字段。但可以通過在可選的exclude參數(shù)中來排除更多字段?;蛘?,通過在of參數(shù)中命名它們來準(zhǔn)確指定希望使用哪些字段。

// exclude 排除字段

@EqualsAndHashCode(exclude = {“password”, “salt”})

// of 指定要包含的字段

@EqualsAndHashCode(of = {“id”, “phone”, “password”})

圖片.png

圖片.png

8. @Data

@Data 包含了 @ToString、@EqualsAndHashCode、@Getter / @Setter和@RequiredArgsConstructor的功能

圖片.png

9. @Value

@Value 將字段都變成不可變類型:使用final修飾, 同時還包含@ToString、@EqualsAndHashCode、@AllArgsConstructor 、@Getter(注意只有Getter沒有Setter)

圖片.png

圖片.png

10. @Log

生成log對象,用于記錄日志,可以通過topic屬性來設(shè)置getLogger(String name)方法的參數(shù) 例如 @Log4j(topic = “com.xxx.entity.User”),默認(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

圖片.png

圖片.png

11. @SneakyThrows

圖片.png

12. @Synchronized

給方法加上同步鎖

圖片.png

13. @Cleanup

主要用來修飾 IO 流相關(guān)類, 會在 finally 代碼塊中對該資源進(jìn)行 close();

圖片.png

14. @Getter(lazy = true)

@Getter(lazy = true)

標(biāo)注字段為懶加載字段,懶加載字段在創(chuàng)建對象時不會進(jìn)行初始化,而是在第一次訪問的時候才會初始化,后面再次訪問也不會重復(fù)初始化

圖片.png

圖片.png

圖片.png

15. @Wither

提供了給final字段賦值的一種方法

圖片.png

16. @Builder

@Builder注釋為你的類生成復(fù)雜的構(gòu)建器API。

圖片.png

17. @Delegate

為List類型的字段生成一大堆常用的方法,其實(shí)這些方法都是List中的方法

注意:一個類中只能使用一個@Delegate注解,因?yàn)槭褂枚鄠€會生成多個size()方法,從而會編譯報錯。

圖片.png

lombok.config

lombok.config配置文件是通過一些設(shè)置來控制代碼生成的規(guī)則或者稱之為習(xí)慣,配置文件的位置應(yīng)放在src/mian/java,不要放置在src/main/resources。

注意配置文件和要使用注解的類要在同一套代碼中,要么同時在src/main/java 要么同時在 src/test/java中

lombok.config

圖片.png

圖片.png


如果,你喜歡ICT行業(yè)技術(shù),歡迎大咖來一起共事。