精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Lombok使用詳解,簡化Java編程

開發 后端
在 Java 應用程序中存在許多重復相似的、生成之后幾乎不對其做更改的代碼,但是我們還不得不花費很多精力編寫它們來滿足 Java 的編譯需求。

 前言

在 Java 應用程序中存在許多重復相似的、生成之后幾乎不對其做更改的代碼,但是我們還不得不花費很多精力編寫它們來滿足 Java 的編譯需求

比如,在 Java 應用程序開發中,我們幾乎要為所有 Bean 的成員變量添加 get() ,set() 等方法,這些相對固定但又不得不編寫的代碼浪費程序員很多精力,同時讓類內容看著更雜亂,我們希望將有限的精力關注在更重要的地方。

[[283807]] 

Lombok 已經誕生很久了,甚至在 Spring Boot Initalizr 中都已加入了 Lombok 選項,

 

這里我們將 Lombok 做一下詳細說明:

Lombok

官網的介紹:Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java. Never write another getter or equals method again. Early access to future java features such as val, and much more.

直白的說: Lombok 是一種 Java™ 實用工具,可用來幫助開發人員消除 Java 的冗長,尤其是對于簡單的 Java 對象(POJO)。它通過注解實現這一目的,且看:

Bean 的對比

傳統的 POJO 類是這樣的

 

通過Lombok改造后的 POJO 類是這樣的

 

一眼可以觀察出來我們在編寫 Employee 這個類的時候通過 @Data 注解就已經實現了所有成員變量的 get() 與 set() 方法等,同時 Employee 類看起來更加清晰簡潔。Lombok 的神奇之處不止這些,豐富的注解滿足了我們開發的多數需求。

Lombok的安裝

查看下圖,@Data的實現,我們發現這個注解是應用在編譯階段的

 

這和我們大多數使用的注解,如 Spring 的注解(在運行時,通過反射來實現業務邏輯)是有很大差別的,如Spring 的@RestController 注解

 

一個更直接的體現就是,普通的包在引用之后一般的 IDE 都能夠自動識別語法,但是 Lombok 的這些注解,一般的 IDE 都無法自動識別,因此如果要使用 Lombok 的話還需要配合安裝相應的插件來支持 IDE 的編譯,防止IDE 的自動檢查報錯,下面以 IntelliJ IDEA 舉例安裝插件。

在Repositories中搜索Lombok,安裝后重啟IDE即可

 

在Maven或Gradle工程中添加依賴

 

至此我們就可以應用 Lombok 提供的注解干些事情了。

Lombok注解詳解

Lombok官網提供了許多注解,但是 “勁酒雖好,可不要貪杯哦”,接下來逐一講解官網推薦使用的注解(有些注解和原有Java編寫方式沒太大差別的也沒有在此處列舉,如@ Synchronized等)

 

@Getter和@Setter

該注解可應用在類或成員變量之上,和我們預想的一樣,@Getter 和 @Setter 就是為成員變量自動生成 get 和 set 方法,默認生成訪問權限為 public 方法,當然我們也可以指定訪問權限 protected 等,如下圖:

 

成員變量name指定生成set方法,并且訪問權限為protected;boolean類型的成員變量 female 只生成get方法,并修改方法名稱為 isFemale()。當把該注解應用在類上,默認為所有非靜態成員變量生成 get 和 set 方法,也可以通過 AccessLevel.NONE 手動禁止生成get或set方法,如下圖:

 

@ToString

該注解需應用在類上,為我們生成 Object 的 toString 方法,而該注解里面的幾個屬性能更加豐富我們想要的內容, exclude 屬性禁止在 toString 方法中使用某字段,而of屬性可以指定需要使用的字段,如下圖:

 

查看編譯后的Employee.class得到我們預期的結果,如下圖

 

@EqualsAndHashCode

該注解需應用在類上,使用該注解,lombok會為我們生成 equals(Object other) 和 hashcode() 方法,包括所有非靜態屬性和非transient的屬性,同樣該注解也可以通過 exclude 屬性排除某些字段,of 屬性指定某些字段,也可以通過 callSuper 屬性在重寫的方法中使用父類的字段,這樣我們可以更靈活的定義bean的比對,如下圖:

 

查看編譯后的Employee.class文件,如下圖:

 

@NonNull

該注解需應用在方法或構造器的參數上或屬性上,用來判斷參數的合法性,默認拋出 NullPointerException 異常

 

查看NonNullExample.class文件,會為我們拋出空指針異常,如下圖: 

 

當然我們可以通過指定異常類型拋出其他異常,lombok.nonNull.exceptionType = [NullPointerException | IllegalArgumentException] , 為實現此功能我們需要在項目的根目錄新建lombok.config文件:

 

重新編譯NonNullExample類,已經為我們拋出非法參數異常:

 

@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor

以上三個注解分別為我們生成無參構造器,指定參數構造器和包含所有參數的構造器,默認情況下,@RequiredArgsConstructor, @AllArgsConstructor 生成的構造器會對所有標記 @NonNull 的屬性做非空校驗。

無參構造器很好理解,我們主要看看后兩種,先看 @RequiredArgsConstructor

 

從上圖中我們可以看出, @RequiredArgsConstructor 注解生成有參數構造器時只會包含有 final 和 @NonNull 標識的 field,同時我們可以指定 staticName 通過生成靜態方法來構造對象

查看Employee.class文件

 

當我們把 staticName 屬性去掉我們來看遍以后的文件:

 

相信你已經注意到細節

@AllArgsConstructor 就更簡單了,請大家自行查看吧

@Data

介紹了以上的注解,再來介紹 @Data 就非常容易懂了,@Data 注解應用在類上,是@ToString, @EqualsAndHashCode, @Getter / @Setter 和 @RequiredArgsConstructor合力的體現,如下圖:

 

@Builder

函數式編程或者說流式的操作越來越流行,應用在大多數語言中,讓程序更具更簡介,可讀性更高,編寫更連貫,@Builder就帶來了這個功能,生成一系列的builder API,該注解也需要應用在類上,看下面的例子就會更加清晰明了。

 

編譯后的Employee.class文件如下:

 

媽媽再也不用擔心我 set 值那么麻煩了,流式操作搞定:

 

@Log

該注解需要應用到類上,在編寫服務層,需要添加一些日志,以便定位問題,我們通常會定義一個靜態常量Logger,然后應用到我們想日志的地方,現在一個注解就可以實現:

 

查看class文件,和我們預想的一樣:

 

Log有很多變種,CommonLog,Log4j,Log4j2,Slf4j等,lombok依舊良好的通過變種注解做良好的支持:

 

我實際使用的是 @Slf4j 注解

val

熟悉 Javascript 的同學都知道,var 可以定義任何類型的變量,而在 java 的實現中我們需要指定具體變量的類型,而 val 讓我們擺脫指定,編譯之后就精準匹配上類型,默認是 final 類型,就像 java8 的函數式表達式,()->System.out.println(“hello lombok”); 就可以解析到Runnable函數式接口。

 

查看解析后的class文件:

 

@Cleanup

當我們對流進行操作,我們通常需要調用 close 方法來關閉或結束某資源,而 @Cleanup 注解可以幫助我們調用 close 方法,并且放到 try/finally 處理塊中,如下圖:

 

編譯后的class文件如下,我們發現被try/finally包圍處理,并調用了流的close方法

 

其實在 JDK1.7 之后就有了 try-with-resource,不用我們顯式的關閉流,這個請大家自行看吧

總結

Lombok的基本操作流程是這樣的:

  1. 定義編譯期的注解
  2. 利用JSR269 api(Pluggable Annotation Processing API )創建編譯期的注解處理器
  3. 利用tools.jar的javac api處理AST(抽象語法樹)
  4. 將功能注冊進jar包

 

Lombok 當然還有很多注解,我推薦使用以上就足夠了,這個工具是帶來便利的,而不能被其捆綁,“弱水三千只取一瓢飲,代碼千萬需抓重點看”,Lombok 能讓我更加專注有效代碼排除意義微小的障眼代碼(get,set等),另外Lombok生成的代碼還能像使用工具類一樣方便(@Builder)。

 

責任編輯:龐桂玉 來源: segmentfault
相關推薦

2023-02-03 08:21:55

2020-11-10 08:54:55

Lombok

2009-09-07 22:29:04

LINQ組合查詢

2011-01-24 13:20:49

2013-12-10 09:13:19

FreneticPyreticOpenFlow

2011-01-04 09:34:23

LambdaC#

2011-06-24 17:22:29

Qt Quick QML

2021-07-13 07:31:26

Springboot編程事務管理

2010-04-30 09:19:05

Servlet 3.0

2010-03-17 14:22:40

Java Socket

2021-09-29 06:28:12

Lombok團隊語言

2020-07-07 09:19:01

LombokJava IDE

2017-04-05 15:45:20

2021-03-10 09:20:31

await代碼前端

2009-06-22 14:26:12

ScalaXML對象

2015-09-09 08:45:49

JavaThreadLocal

2024-01-11 13:21:53

開發代碼

2022-08-25 11:00:19

編程系統

2011-07-01 14:55:28

Qt QML C++

2022-10-30 14:22:25

Python編程模塊
點贊
收藏

51CTO技術棧公眾號

精品欧美激情精品一区| 美女脱光内衣内裤视频久久网站 | 精品人妻av一区二区三区| 亚洲欧美文学| 日韩精品高清在线| 人人爽人人av| 日本三级在线观看网站| 久久婷婷色综合| 91精品视频免费看| 亚洲影院在线播放| 久久精品久久久| 亚洲精品99久久久久| 美女少妇一区二区| 福利小视频在线| 国产精品福利电影一区二区三区四区| 成人免费视频网站入口| 久久久久精彩视频| 亚洲人体偷拍| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲国产精品成人综合久久久| 日韩午夜视频在线| 欧美性猛交xxxx久久久| 97碰在线视频| 欧美18一19xxx性| 国产亚洲欧洲997久久综合| 超碰国产精品久久国产精品99| 中文字幕第三页| 影音先锋在线一区| 萌白酱国产一区二区| 国产精品久久免费观看| 欧美一区二区三区红桃小说| 91精品久久久久久久99蜜桃 | 国产乱国产乱老熟300| 欧美女王vk| 日韩va亚洲va欧洲va国产| 国产xxxxhd| 亚洲影视资源| 欧美蜜桃一区二区三区| 男人插女人下面免费视频| 天堂中文在线播放| 偷窥少妇高潮呻吟av久久免费| 亚洲国产精品女人| 国产在线二区| 国产精品久久三区| 亚洲午夜精品福利| p色视频免费在线观看| 亚洲另类xxxx| 91探花福利精品国产自产在线| 一区二区三区国| 香港一级纯黄大片| 99久久精品一区| 国产伦精品一区二区三区视频孕妇| 国产美女www爽爽爽视频| 日韩不卡一区二区三区| 国产91久久婷婷一区二区| 国产成人精品一区二三区| 99热精品在线观看| 2019亚洲男人天堂| 亚洲综合久久网| 石原莉奈在线亚洲三区| 日产精品久久久一区二区福利| 啦啦啦免费高清视频在线观看| 亚洲一区久久| 国产成人欧美在线观看| 自拍偷拍福利视频| 久久69国产一区二区蜜臀| 91青草视频久久| 亚洲欧美高清视频| 成人av在线一区二区三区| 好看的日韩精品| 你懂的视频在线免费| 亚洲国产精品二十页| 在线综合视频网站| 狂野欧美激情性xxxx欧美| 欧美色另类天堂2015| 欧美性猛交xxx乱久交| 91九色成人| 欧美大黄免费观看| 公侵犯人妻一区二区三区| 日韩88av| 久久久久久久久中文字幕| 东京热一区二区三区四区| 美女一区二区三区在线观看| 99精品国产高清一区二区| 亚洲人妻一区二区| 中文字幕中文字幕在线一区| 丝袜人妻一区二区三区| avav成人| 亚洲韩国欧洲国产日产av| 手机看片福利视频| 欧美三级网页| 国产精品国产亚洲伊人久久| www.久久成人| 久久黄色美女电影| 国产精品网站在线观看| 国产在线视频综合| 色成人免费网站| 日韩精品最新网址| 精品人妻中文无码av在线| 狠狠噜噜久久| 国产精品丝袜久久久久久不卡| 亚洲精品国产片| 中文字幕精品综合| 日韩国产欧美亚洲| 韩国三级成人在线| 这里精品视频免费| 天天爽夜夜爽夜夜爽精品| 韩国成人精品a∨在线观看| 欧美污视频久久久| 18video性欧美19sex高清| 欧美高清www午色夜在线视频| 久久精品综合视频| 国内在线观看一区二区三区| 国产一区私人高清影院| 巨骚激情综合| 亚洲.国产.中文慕字在线| 天美一区二区三区| 欧美一区二区三区高清视频| 91高潮在线观看| 亚洲精品国产av| 亚洲日本丝袜连裤袜办公室| 国产自偷自偷免费一区| 美女网站色精品尤物极品姐弟| 久久久国产精品x99av| 欧美超碰在线观看| 91在线视频在线| 免费人成在线观看视频播放| 久久视频免费| 伦伦影院午夜日韩欧美限制| 艳妇乳肉豪妇荡乳av无码福利| 26uuu亚洲| 免费国产黄色网址| 国产精品视频3p| 欧美激情欧美狂野欧美精品 | 国产精品实拍| 欧美日韩一区二区三区视频| 国产毛片欧美毛片久久久| 久久精品观看| 欧美专区一二三| 校园春色亚洲色图| 亚洲免费人成在线视频观看| 日韩欧美三级视频| 91色|porny| 黄色片久久久久| 综合亚洲色图| 国产97色在线|日韩| 欧美一区二区视频| 在线视频中文字幕一区二区| 白白色免费视频| 日韩成人一级片| 亚洲欧美99| 999精品视频在线观看| 久久这里有精品视频| 99精品国产99久久久久久97| 亚洲三级在线免费| 欧美熟妇精品一区二区| 亚洲精华国产欧美| 欧美不卡福利| 久久91视频| 欧美大肥婆大肥bbbbb| 亚洲国产精品久久久久久久 | 亚洲无码精品一区二区三区| 国产午夜精品久久久久久免费视 | 一级黄色大片网站| 亚洲男人都懂的| 中国黄色片视频| 久久激情一区| 这里只有精品66| 亚洲国产中文在线| 日韩美女中文字幕| 久久黄色美女电影| 日韩精品福利网站| 一卡二卡三卡在线观看| 亚洲一线二线三线久久久| 99久久久久久久久久| 久久精品国产精品亚洲精品| www.18av.com| 亚洲精品进入| 成人乱色短篇合集| a在线视频v视频| 永久免费毛片在线播放不卡| aaa一区二区| 精品免费在线观看| 人与动物性xxxx| 成人不卡免费av| 一本色道久久亚洲综合精品蜜桃| 亚洲男女av一区二区| 精品一区久久| 24小时成人在线视频| 97免费视频在线播放| 日本在线免费看| 日韩av一区二区在线观看| 一级爱爱免费视频| 岛国av午夜精品| 999精品在线视频| 久久香蕉国产线看观看99| 亚洲日本黄色片| 久久亚洲综合| 蜜臀av色欲a片无码精品一区| 日韩欧美一区二区三区在线视频 | 国产成人亚洲综合91| www.在线视频| 中文字幕久热精品视频在线| 亚洲精品久久久久久久久久| 欧美亚洲国产一区二区三区va| 豆国产97在线 | 亚洲| 国产精品进线69影院| 草草影院第一页| 丁香婷婷综合色啪| 国产精品嫩草影院8vv8| 欧美一级专区| 搞av.com| 黄色另类av| 国产精品jizz在线观看老狼| 九九久久成人| 精品国产一区二区三区四区精华 | 中文字幕色婷婷在线视频| 欧美人与性动交a欧美精品| 9色在线视频网站| 亚洲天堂av电影| 无码国产精品一区二区色情男同| 欧美一二三在线| 一区二区三区免费在线| 欧美亚洲图片小说| 国产精品视频免费播放| 亚洲成av人影院在线观看网| 欧美日韩免费一区二区| 综合久久国产九一剧情麻豆| 自拍偷拍你懂的| 国产色综合久久| 国产人妻大战黑人20p| 99久久精品一区二区| 精品影片一区二区入口| 福利电影一区二区三区| 国产裸体视频网站| 国产激情视频一区二区在线观看 | 国产免费a视频| 日韩欧美有码在线| 日韩人妻精品中文字幕| 懂色aⅴ精品一区二区三区蜜月| 久久久久99精品| 亚洲图片欧美一区| 男人的天堂一区二区| 天天综合天天做天天综合| 国产精品久久久免费视频| 欧美日韩一区二区精品| 欧美精品一级片| 亚洲成精国产精品女| 日本三级黄色大片| 精品成人乱色一区二区| 久久免费激情视频| 色婷婷精品大在线视频| 免费黄色小视频在线观看| 欧美日韩黄色一区二区| 国产精品视频一区二区三区,| 91麻豆精品国产综合久久久久久| 天天影视综合色| 亚洲三级中文字幕| 精品对白一区国产伦| 日本免费一区视频| 亚洲精品美女网站| 国产主播福利在线| 在线精品视频视频中文字幕| 日本高清在线观看wwwww色| 久久影院中文字幕| 福利成人导航| 国产va免费精品高清在线观看| 在线成人视屏| 成人亚洲欧美一区二区三区| 亚洲视频一起| 欧美极品一区| 99久久九九| 日韩人妻无码精品久久久不卡| 午夜亚洲激情| 在线视频观看91| av午夜一区麻豆| 波多野结衣一二三四区| 亚洲精品第1页| 国产精品人人人人| 欧美放荡的少妇| 天堂在线资源8| 日韩在线视频免费观看| 国产探花视频在线观看| 国产成人精彩在线视频九色| 亚洲伊人精品酒店| 欧美二区三区在线| 欧美日本一区| 一本久道中文无码字幕av| 国产九色精品成人porny| 亚洲一区二区三区无码久久| 中文字幕亚洲区| 久久久国产精品成人免费| 欧美日韩精品一区二区天天拍小说| 亚洲产国偷v产偷v自拍涩爱| 亚洲午夜久久久影院| 污污在线观看| 国产精品白嫩初高中害羞小美女| 一区二区日韩| 亚洲啪啪av| 亚洲尤物在线| 无码人妻丰满熟妇区毛片蜜桃精品| 久久综合九色综合久久久精品综合| 久草福利资源在线| 欧美性69xxxx肥| 亚洲第一天堂影院| 中文字幕亚洲一区| 天堂网在线最新版www中文网| 91青青草免费在线看| 国产精品一区二区三区av麻| www.男人天堂网| 久久99久久99| 日韩女同一区二区三区| 黄色一区二区三区| 亚洲第一视频在线| 久久精品国产亚洲精品2020| 亚州一区二区三区| 久久久久久国产精品mv| 国产精品第十页| 天天干天天色天天干| 国产欧美一区二区三区在线看蜜臀 | 久久精品九色| 亚洲丰满在线| 日韩精品午夜视频| 久久精品一区二区免费播放| 最新国产精品久久精品| 波多野结衣mp4| 日韩精品免费在线视频| h片精品在线观看| 成人毛片网站| 午夜日韩视频| 国产九九九视频| 亚洲欧洲性图库| 一卡二卡三卡在线观看| xxxxx91麻豆| а天堂中文最新一区二区三区| 亚洲欧洲日本国产| 免费av网站大全久久| 老司机福利在线观看| 91国产成人在线| аⅴ资源新版在线天堂| 国产精品黄色av| 日韩国产一区二区三区| 我要看一级黄色大片| 国产精品视频在线看| 中国精品一区二区| 色偷偷噜噜噜亚洲男人| 久久xxx视频| 亚洲五月六月| 精彩视频一区二区三区| 国产精品精品软件男同| 91精品久久久久久久91蜜桃| 一色桃子av在线| 北条麻妃高清一区| 亚洲天堂激情| 黄色网址在线视频| 色欧美片视频在线观看在线视频| 青青草在线视频免费观看| 日本a级片电影一区二区| 精品国产一区一区二区三亚瑟| 97超碰成人在线| 亚洲精品写真福利| 欧美一区二区三区激情| 77777亚洲午夜久久多人| 久久99精品久久久久久园产越南| 亚洲色精品三区二区一区| 国产精品毛片无遮挡高清| 国产普通话bbwbbwbbw| 欧美极品少妇与黑人| 亚洲黄页在线观看| 美女在线视频一区二区| 一区二区三区蜜桃| 天堂а在线中文在线无限看推荐| 国产激情999| 亚洲一区在线| 亚洲最大免费视频| 欧美色窝79yyyycom| av在线免费网站| 久久资源av| 狠狠狠色丁香婷婷综合激情| 国产无码精品视频| 国产一区二区动漫| 清纯唯美激情亚洲| 免费观看成人在线视频| 亚洲精品国产精品乱码不99| 你懂的免费在线观看视频网站| 成人福利视频网| 亚洲九九精品| 欧美日韩国产一二三区| 精品久久99ma| 国产一区影院| 国产黄页在线观看| 国产精品对白交换视频| 男人天堂av网| 国产欧美日韩精品在线观看| 亚洲韩日在线| 一级黄色片日本| 亚洲欧美综合另类中字| 亚洲网址在线观看| 九九热精品在线播放| 五月综合激情日本mⅴ|