精品欧美一区二区三区在线观看 _久久久久国色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一区二区| 久久97人妻无码一区二区三区| 91久久偷偷做嫩草影院电| 色综合久久久久久久| 麻豆md0077饥渴少妇| 欧美扣逼视频| 国产a级毛片一区| 国产精品久久久久久av下载红粉| 国产一级片播放| 免费看污片网站| 精品乱码一区二区三四区视频| 久久综合综合久久综合| 91成人免费观看网站| 欧美风情第一页| 九九久久婷婷| 精品精品国产高清一毛片一天堂| 色哟哟精品视频| 超碰中文在线| 亚洲天堂免费在线观看视频| 久久综合伊人77777麻豆| 国产深喉视频一区二区| 美女在线一区二区| 欧美性受xxxx白人性爽| 久久视频免费看| 先锋资源久久| 中文字幕亚洲二区| 麻豆精品免费视频| 日韩欧美在线精品| 精品国产网站在线观看| 制服下的诱惑暮生| 欧美美女被草| 欧美性生交xxxxx久久久| 丁香六月激情婷婷| av免费在线观看网址| 国产精品超碰97尤物18| 色姑娘综合网| eeuss影院www在线播放| 久久久久久电影| 裸体丰满少妇做受久久99精品| 亚洲精品第五页| 国产河南妇女毛片精品久久久| 国产日韩欧美黄色| 国产美女自慰在线观看| 黄一区二区三区| 国产日韩欧美在线视频观看| 亚洲天堂中文字幕在线| 美女mm1313爽爽久久久蜜臀| 国产精品美女久久久久av超清| 波多野结衣爱爱| 日本成人在线电影网| 国产精品高潮粉嫩av| 高潮毛片又色又爽免费 | 久久色免费在线视频| 日本伦理一区二区三区| 在线免费看v片| 色哟哟免费在线观看| 亚洲国产精品成人综合| 亚洲一区三区电影在线观看| 欧美激情午夜| 亚洲综合在线观看视频| 无码专区aaaaaa免费视频| 欧美亚洲日本精品| 91福利在线导航| 啊啊啊国产视频| 亚洲福利影视| 欧美成人vr18sexvr| 青青草视频网站| 欧美猛男男男激情videos| 色哟哟网站入口亚洲精品| 国产美女福利视频| 国内久久精品| 日韩av手机在线看| 一级黄色免费片| 成人污视频在线观看| 麻豆av一区二区| 免费在线观看av片| 性感美女久久精品| 手机看片福利日韩| 精品中文字幕一区二区三区| 欧美精品一区二区蜜臀亚洲| 国产黄片一区二区三区| 一本精品一区二区三区| 性欧美亚洲xxxx乳在线观看| 秋霞av一区二区三区| 国内精品免费**视频| 官网99热精品| 福利在线视频导航| 一区二区三区蜜桃| av丝袜天堂网| 国产精品极品在线观看| 伊人伊人伊人久久| 国产大片中文字幕| 另类专区欧美蜜桃臀第一页| 国产美女99p| 97视频精彩视频在线观看| 亚洲综合成人在线| 久久这里只精品| 日本久久成人网| 久久影院在线观看| 国产亚洲欧美日韩高清| 成人国产亚洲欧美成人综合网| 日韩欧美一区二区视频在线播放| 欧美hdxxxx| 欧美蜜桃一区二区三区| 免费黄色在线视频| 国产精品扒开腿做爽爽爽软件| 国产精品普通话| 性插视频在线观看| 依依成人精品视频| 午夜免费看毛片| 首页亚洲中字| 久久久久久久97| 国产精品久久久久久久久毛片 | 国产精品国产三级国产专区53| 国产高清免费在线播放| 精品女厕一区二区三区| 三上悠亚 电影| 97在线精品| 国产精品福利网站| 久久久久久女乱国产| 午夜影院在线观看欧美| 国产精品偷伦视频免费观看了| 久久国产成人精品| 国产精品免费一区二区三区都可以 | 国产精品一区二区三区在线| 国产成人午夜| 在线播放国产精品二区一二区四区| 一道本在线观看| 国产一区二区三区久久| 精品国产免费久久久久久尖叫| 四虎影视成人| 日韩情涩欧美日韩视频| 一区二区成人免费视频| 国产在线不卡一区| 日本福利视频导航| 国产精品xnxxcom| 菠萝蜜影院一区二区免费| 中文字幕在线观看你懂的| 国产日本欧美一区二区| 99视频在线视频| 欧美日韩一区二区三区视频播放| 日本精品在线视频| 国产福利免费在线观看| 日本高清不卡一区| 国产99在线 | 亚洲| 免费观看一级特黄欧美大片| 亚洲精品高清国产一线久久| 亚洲日日夜夜| 九九久久久久久久久激情| www.四虎在线观看| 亚洲午夜久久久久久久久电影网| 亚洲国产精品第一页| 亚洲精品一二| 欧美少妇一区| 日韩毛片免费看| 不用播放器成人网| 丰满肉嫩西川结衣av| 精品美女久久久久久免费| 人妻熟女aⅴ一区二区三区汇编| 免费日韩av片| 亚洲欧美电影在线观看| 亚洲欧美在线人成swag| 欧美激情xxxxx| 天堂网在线资源| 欧美综合欧美视频| 青青操在线视频观看| 国产乱一区二区| 男人日女人下面视频| 精品久久综合| 91欧美日韩一区| 爱啪啪综合导航| 中文字幕在线精品| 丰满肉肉bbwwbbww| 在线观看日韩av先锋影音电影院| 天堂а√在线中文在线鲁大师| 久久激情五月激情| 日韩精品一区在线视频| 波多野结衣在线观看一区二区| 91情侣偷在线精品国产| 欧美久久天堂| 日韩视频免费看| 天堂中文网在线| 欧美日韩免费高清一区色橹橹| 国产在线综合网| 国产日韩av一区二区| jjzz黄色片| 热久久国产精品| 黄色一级片在线看| 91久久电影| 鲁丝一区鲁丝二区鲁丝三区| 国产精品亚洲四区在线观看 | 日本中文字幕网| 国产视频一区二区在线观看| 在线成人精品视频| 日本不卡免费在线视频| 真人抽搐一进一出视频| 久久亚洲专区| 欧美日韩精品久久| 99re6热只有精品免费观看| 国产精品视频自在线| av在线播放资源| 免费不卡在线观看av| 高清日韩av电影| 国产视频丨精品|在线观看| 99热这里只有精品5| 欧美在线色视频| av黄色在线播放| 亚洲成人福利片| 99热精品免费| 中文字幕一区在线观看视频| 一本色道久久综合亚洲精品图片 | 欧美这里有精品| 久久黄色精品视频| 亚洲一区二区在线免费观看视频| 91制片厂在线| 欧美国产日韩a欧美在线观看| 无遮挡aaaaa大片免费看| 国产精品99久久久久久似苏梦涵| wwww.国产| 久久天堂精品| 国产91在线免费| 最新日韩在线| 少妇大叫太大太粗太爽了a片小说| 久久综合99| 新呦u视频一区二区| 九热爱视频精品视频| 精品久久蜜桃| 欧美三级电影在线| 国产亚洲欧美一区二区| 超碰97久久国产精品牛牛| 91免费高清视频| 清纯唯美激情亚洲| 亚洲精品日韩激情在线电影| 亚洲综合伊人| 91色视频在线观看| 久久69av| caoporen国产精品| 免费成人黄色| 中文字幕欧美日韩| 日本中文字幕在线观看| 精品国产视频在线| 国产三区视频在线观看| 久久久精品久久久久| www.在线视频| 欧美激情视频网| 色在线中文字幕| 日本精品久久久久久久| 影视一区二区三区| 欧美成人免费全部| 91蜜桃在线视频| 欧美大片大片在线播放| 国产区美女在线| 亚洲91精品在线观看| 中文字幕成在线观看| 日本精品视频在线| 中文字幕日韩亚洲| 97夜夜澡人人双人人人喊| caoporn成人免费视频在线| 国产日韩精品一区观看| 亚洲精华一区二区三区| 日本一区二区三区免费看| 日韩欧美视频专区| 水蜜桃在线免费观看| 怡红院精品视频在线观看极品| 少妇高潮毛片色欲ava片| 亚洲欧美大片| 免费av不卡在线| 波多野结衣一区二区三区| 在线国产视频一区| 亚洲欧美乱综合| 韩国av中文字幕| 欧美日韩一区二区三区在线| 国产高潮流白浆喷水视频| 日韩精品亚洲元码| 青青青青在线| 性色av一区二区三区在线观看| 成人午夜精品| 91偷拍精品一区二区三区| 日韩高清成人在线| 日本福利视频导航| 欧美专区在线| 国产xxxxhd| 国产视频一区二区在线观看| 欧美激情精品久久| 在线中文字幕不卡| 亚洲精品一区二区三区四区| 永久免费精品影视网站| 麻豆福利在线观看| 国产精品福利无圣光在线一区| 中文一区二区三区四区| 亚洲精品乱码视频| 欧美日韩三级| 色噜噜狠狠永久免费| 95精品视频在线| 99久久99久久精品国产| 色狠狠一区二区三区香蕉| 精品乱子伦一区二区| 夜夜嗨av一区二区三区免费区 | 无吗不卡中文字幕| 国产日韩一级片| 亚洲一级黄色av| 超碰激情在线| 成人免费视频网站入口| 日韩一区二区三区免费播放| 国产精品免费观看久久| 国产黄色精品网站| 黑人操日本美女| 欧美在线免费观看亚洲| 亚洲 小说区 图片区 都市| 欧美成人在线免费视频| 欧美xxxx网站| 日本高清不卡一区二区三| 99香蕉国产精品偷在线观看 | 久久成人亚洲精品| 丰满少妇一区| 欧美日韩亚洲一区二区三区四区| 黄色另类av| 女同性αv亚洲女同志| 中文字幕字幕中文在线中不卡视频| 精人妻无码一区二区三区| 亚洲九九九在线观看| 人人草在线视频| 精品亚洲一区二区三区四区五区高| 国产一区二区三区四区三区四| 国产精品igao网网址不卡| 亚洲视频网在线直播| 一区二区三区精| xxxxx成人.com| 99er精品视频| 亚洲国产精品女人| 黑人巨大精品欧美一区| 青青草华人在线视频| 欧美午夜精品一区| www.视频在线.com| 国产精品亚洲网站| 日本不卡高清| 国产美女18xxxx免费视频| 国产精品美女一区二区| 国产一区二区三区在线观看 | av中文字幕在线观看第一页 | 精品久久电影| 日韩中文字幕a| 亚洲视频在线一区二区| 国产黄色大片网站| 欧美日韩国产二区| 岛国成人av| 91精品91久久久中77777老牛| 久久久青草青青国产亚洲免观| 天天干天天色综合| 中文字幕无线精品亚洲乱码一区 | 欧美日韩在线观看一区二区三区| 美女黄网久久| 亚洲天堂av中文字幕| 91精品婷婷国产综合久久性色 | 国产成人极品视频| 久久久综合色| 少妇精品无码一区二区| 亚洲18女电影在线观看| 欧美美乳在线| 91精品在线影院| 在线观看日韩av电影| 黄瓜视频污在线观看| 欧美日韩国产精品成人| 欧美性爽视频| 欧美日韩精品免费在线观看视频| 久久精品国产久精国产| 精品国产乱码久久久久久鸭王1 | 97伦理在线四区| 亚洲综合不卡| 三级黄色录像视频| 亚洲福利视频专区| 亚洲a∨精品一区二区三区导航| 激情五月五月婷婷| 91亚洲精品一区二区乱码| 最新中文字幕第一页| 欧美激情视频一区| 成人嫩草影院| 国产伦精品一区二区三区精品| 日本高清免费不卡视频| 视频在线观看入口黄最新永久免费国产| 九9re精品视频在线观看re6| 老司机一区二区| 日韩男人的天堂| 日韩在线免费高清视频| 免费萌白酱国产一区二区三区| 精品亚洲一区二区三区四区| 亚洲成人精品一区| 欧美性天天影视| 欧美另类高清视频在线| 国产精品自产自拍| 亚洲永久精品一区| 久久久久九九九九| 91亚洲一区| 精品国产av无码| 精品国产乱码久久久久久久| 国产成人精品一区二区三区视频|