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

代碼潔癖的春天!Java效率工具之Lombok

開發(fā) 后端
還在編寫無聊枯燥又難以維護(hù)的POJO嗎?潔癖者的春天在哪里?請看Lombok!

還在編寫無聊枯燥又難以維護(hù)的POJO嗎?潔癖者的春天在哪里?請看Lombok!

在過往的Java項目中,充斥著太多不友好的代碼:POJO的getter/setter/toString;異常處理;I/O流的關(guān)閉操作等等,這些樣板代碼既沒有技術(shù)含量,又影響著代碼的美觀,Lombok應(yīng)運(yùn)而生。

首先說明一下:任何技術(shù)的出現(xiàn)都是為了解決某一類問題的,如果在此基礎(chǔ)上再建立奇技淫巧,不如回歸Java本身。應(yīng)該保持合理使用而不濫用。

Lombok的使用非常簡單,下面我們一起來看下:

1)引入相應(yīng)的maven包: 

  1. <dependency>  
  2.   <groupId>org.projectlombok</groupId>  
  3.   <artifactId>lombok</artifactId>  
  4.   <version>1.16.18</version>  
  5.   <scope>provided</scope>  
  6. </dependency> 

Lombok的scope=provided,說明它只在編譯階段生效,不需要打入包中。事實正是如此,Lombok在編譯期將帶Lombok注解的Java文件正確編譯為完整的Class文件。

2)添加IDE工具對Lombok的支持:

IDEA中引入Lombok支持如下:

  •  點擊File-- Settings設(shè)置界面,安裝Lombok插件:   

  • 點擊File-- Settings設(shè)置界面,開啟Annocation Processors:

開啟該項是為了讓Lombok注解在編譯階段起到作用。

Eclipse的Lombok插件安裝可以自行百度,也比較簡單,值得一提的是,由于Eclipse內(nèi)置的編譯器不是Oracle javac,而是eclipse自己實現(xiàn)的Eclipse Compiler for Java (ECJ).要讓ECJ支持Lombok,需要在eclipse.ini配置文件中添加如下兩項內(nèi)容:

-Xbootclasspath/a:[lombok.jar所在路徑]

-javaagent:[lombok.jar所在路徑]

3)Lombok實現(xiàn)原理:

自從Java 6起,javac就支持“JSR 269 Pluggable Annotation Processing API”規(guī)范,只要程序?qū)崿F(xiàn)了該API,就能在javac運(yùn)行的時候得到調(diào)用。

Lombok就是一個實現(xiàn)了"JSR 269 API"的程序。在使用javac的過程中,它產(chǎn)生作用的具體流程如下:

  •  javac對源代碼進(jìn)行分析,生成一棵抽象語法樹(AST)
  •  javac編譯過程中調(diào)用實現(xiàn)了JSR 269的Lombok程序
  •  此時Lombok就對第一步驟得到的AST進(jìn)行處理,找到Lombok注解所在類對應(yīng)的語法樹(AST),然后修改該語法樹(AST),增加Lombok注解定義的相應(yīng)樹節(jié)點
  •  javac使用修改后的抽象語法樹(AST)生成字節(jié)碼文件

4) Lombok注解的使用:

POJO類常用注解:

@Getter/@Setter: 作用類上,生成所有成員變量的getter/setter方法;作用于成員變量上,生成該成員變量的getter/setter方法。可以設(shè)定訪問權(quán)限及是否懶加載等。 

  1. package com.trace;  
  2. import lombok.AccessLevel;  
  3. import lombok.Getter;  
  4. import lombok.Setter;  
  5. /**  
  6.  * Created by Trace on 2018/5/19.<br/>  
  7.  * DESC: 測試類  
  8.  */  
  9. @SuppressWarnings("unused")  
  10. public class TestClass {  
  11.     public static void main(String[] args) {  
  12.     }  
  13.     @Getter(value = AccessLevel.PUBLIC)  
  14.     @Setter(value = AccessLevel.PUBLIC)  
  15.     public static class Person {  
  16.         private String name;  
  17.         private int age;  
  18.         private boolean friendly;  
  19.     }  
  20.     public static class Animal {  
  21.         private String name;  
  22.         private int age;  
  23.         @Getter @Setter private boolean funny;  
  24.     }  
  25.  

在Structure視圖中,可以看到已經(jīng)生成了getter/setter等方法:

編譯后的代碼如下:[這也是傳統(tǒng)Java編程需要編寫的樣板代碼]

 

  1. //  
  2. // Source code recreated from a .class file by IntelliJ IDEA  
  3. // (powered by Fernflower decompiler)  
  4. //  
  5. package com.trace;  
  6. public class TestClass {  
  7.     public TestClass() {  
  8.     }  
  9.     public static void main(String[] args) {  
  10.     }  
  11.     public static class Animal {  
  12.         private String name;  
  13.         private int age;  
  14.         private boolean funny;  
  15.         public Animal() {  
  16.         }  
  17.         public boolean isFunny() {  
  18.             return this.funny;  
  19.         }  
  20.         public void setFunny(boolean funny) {  
  21.             this.funny = funny;  
  22.         }  
  23.     }  
  24.     public static class Person {  
  25.         private String name;  
  26.         private int age;  
  27.         private boolean friendly;  
  28.         public Person() {  
  29.         }  
  30.         public String getName() {  
  31.             return this.name;  
  32.         }  
  33.         public int getAge() {  
  34.             return this.age;  
  35.         }  
  36.         public boolean isFriendly() {  
  37.             return this.friendly;  
  38.         }  
  39.         public void setName(String name) {  
  40.             this.name = name;  
  41.         }  
  42.         public void setAge(int age) {  
  43.             this.age = age;  
  44.         }  
  45.         public void setFriendly(boolean friendly) {  
  46.             this.friendly = friendly;  
  47.         }  
  48.     }  

@ToString:作用于類,覆蓋默認(rèn)的toString()方法,可以通過of屬性限定顯示某些字段,通過exclude屬性排除某些字段。

@EqualsAndHashCode:作用于類,覆蓋默認(rèn)的equals和hashCode

@NonNull:主要作用于成員變量和參數(shù)中,標(biāo)識不能為空,否則拋出空指針異常。

@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor:作用于類上,用于生成構(gòu)造函數(shù)。有staticName、access等屬性。

staticName屬性一旦設(shè)定,將采用靜態(tài)方法的方式生成實例,access屬性可以限定訪問權(quán)限。

@NoArgsConstructor:生成無參構(gòu)造器;

@RequiredArgsConstructor:生成包含final和@NonNull注解的成員變量的構(gòu)造器;

@AllArgsConstructor:生成全參構(gòu)造器。

編譯后結(jié)果: 

  1. public static class Person {  
  2.     @NonNull  
  3.     private String name;  
  4.     private int age;  
  5.     private boolean friendly;  
  6.     public String toString() {  
  7.         return "TestClass.Person(name=" + this.getName() + "age=" + this.getAge() + ")";  
  8.     }  
  9.     @NonNull  
  10.     public String getName() {  
  11.         return this.name;  
  12.     }  
  13.     public int getAge() {  
  14.         return this.age;  
  15.     }  
  16.     public boolean isFriendly() {  
  17.         return this.friendly;  
  18.     }  
  19.     public void setName(@NonNull String name) {  
  20.         if(name == null) {  
  21.             throw new NullPointerException("name");  
  22.         } else {  
  23.             this.name = name;  
  24.         }  
  25.     }  
  26.     public void setAge(int age) {  
  27.         this.age = age;  
  28.     }  
  29.     public void setFriendly(boolean friendly) {  
  30.         this.friendly = friendly;  
  31.     }  
  32.     private Person() {  
  33.     }  
  34.     private static TestClass.Person of() {  
  35.         return new TestClass.Person();  
  36.     } 
  37.     @ConstructorProperties({"name"})  
  38.     Person(@NonNull String name) {  
  39.         if(name == null) {  
  40.             throw new NullPointerException("name");  
  41.         } else {  
  42.             this.name = name;  
  43.         }  
  44.     }  
  45.     @ConstructorProperties({"name", "age", "friendly"})  
  46.     public Person(@NonNull String name, int age, boolean friendly) {  
  47.         if(name == null) {  
  48.             throw new NullPointerException("name"); 
  49.         } else {  
  50.             this.name = name;  
  51.             this.age = age;  
  52.             this.friendly = friendly;  
  53.         }  
  54.     }  

@Data:作用于類上,是以下注解的集合:@ToString @EqualsAndHashCode @Getter @Setter @RequiredArgsConstructor

@Builder:作用于類上,將類轉(zhuǎn)變?yōu)榻ㄔ煺吣J?/p>

@Log:作用于類上,生成日志變量。針對不同的日志實現(xiàn)產(chǎn)品,有不同的注解:

其他重要注解:

@Cleanup:自動關(guān)閉資源,針對實現(xiàn)了java.io.Closeable接口的對象有效,如:典型的IO流對象

編譯后結(jié)果如下:

是不是簡潔了太多。

@SneakyThrows:可以對受檢異常進(jìn)行捕捉并拋出,可以改寫上述的main方法如下:

 

@Synchronized:作用于方法級別,可以替換synchronize關(guān)鍵字或lock鎖,用處不大。

責(zé)任編輯:龐桂玉 來源: Hollis
相關(guān)推薦

2025-04-18 04:22:00

2021-09-08 09:37:54

工具代碼Python

2022-01-06 14:05:07

Vue代碼前端

2016-10-12 13:37:09

LombokIDEidea

2020-03-18 15:54:41

開發(fā)效率代碼

2023-10-23 08:00:00

JavaLombok開發(fā)

2012-03-14 09:35:56

JavaMaveneclipse

2021-09-03 13:37:25

Lombo代碼Java

2021-02-20 08:05:35

代碼效率C++

2015-06-15 09:31:26

DCIM

2012-10-24 14:59:47

Facebook 最大

2012-03-19 21:04:16

移動支付

2012-12-28 09:37:55

2023-10-16 08:27:17

java工具類

2021-05-10 15:08:37

Java工具編碼

2025-06-10 01:34:00

效率工具編碼

2012-03-07 09:41:01

Java

2012-07-16 01:20:09

代碼效率

2025-01-10 12:00:00

LombokMavenGradle

2021-04-29 08:13:49

Mac 工具軟件
點贊
收藏

51CTO技術(shù)棧公眾號

av天堂永久资源网| 国产精品一区二区三区久久 | 免费看男女www网站入口在线 | 中文字幕在线免费观看视频| 国产日韩欧美a| 91福利视频导航| 国产在线观看黄色| 日韩一区欧美| 欧美精品一区二区在线播放| 99草草国产熟女视频在线| 日本天堂在线观看| 成人国产视频在线观看| 国产精品88a∨| 免费无码毛片一区二区app| 免费短视频成人日韩| 制服丝袜一区二区三区| 男人操女人逼免费视频| 美女免费久久| 91丨porny丨最新| 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 国产成人久久777777| 成人看av片| 久久久99精品免费观看| 亚洲一区二区三区久久 | 成人女同在线观看| 国产精品久久久久久妇女6080| 国产欧美一区二区在线播放| 在线观看日韩一区二区| 国产偷自视频区视频一区二区| 久久精品小视频| 国产特级黄色录像| 国产极品模特精品一二| 欧美福利一区二区| 久章草在线视频| 成人性生交大片免费看网站| 亚洲欧美在线视频观看| 欧美综合77777色婷婷| 丁香六月色婷婷| 久久99精品久久久久| 欧洲成人午夜免费大片| 九热这里只有精品| 欧美ab在线视频| 久久黄色av网站| 受虐m奴xxx在线观看| 久久精品国产亚洲blacked| 欧美一区二区精品| 国产无遮挡猛进猛出免费软件 | 欧美日韩一区二区高清| 久久精品99久久香蕉国产色戒| 中文字幕丰满孑伦无码专区| 精品福利一区| 亚洲成人网在线| 无码人妻一区二区三区在线| 天堂va在线高清一区| 91精品国产91热久久久做人人| 色悠悠久久综合网| 亚洲a∨精品一区二区三区导航| 日韩欧美国产视频| 日韩视频第二页| 天堂在线中文网官网| 五月天丁香久久| 男女啪啪免费视频网站| а√天堂中文在线资源8| 亚洲一本大道在线| av无码久久久久久不卡网站| 亚洲综合影视| 亚洲国产视频一区二区| 国产真实老熟女无套内射| 成人三级小说| 欧美性猛交xxxx偷拍洗澡| 色欲av无码一区二区人妻| 麻豆mv在线看| 日本黄色一区二区| 色婷婷成人在线| av一级久久| 精品久久久久久久久久久院品网| xfplay5566色资源网站| 老熟妇高潮一区二区高清视频| 男女啪啪免费观看| 成人在线免费视频| 国产精品久久毛片a| 亚洲资源视频| 直接在线观看的三级网址| 亚洲午夜激情网站| 成熟丰满熟妇高潮xxxxx视频| 成人影院av| 欧美性色综合网| 亚洲色图偷拍视频| 都市激情亚洲| 亚洲视屏在线播放| 中国一级片在线观看| 韩国亚洲精品| 国产成人短视频| 国产人妻精品一区二区三| 成人美女视频在线观看18| 蜜桃av噜噜一区二区三| 色综合久久影院| 亚洲一区二区在线观看视频| 人妻熟女一二三区夜夜爱| 国产精品99久久久久久董美香 | 久久久久久久一区二区三区| 国产区一区二区三| 久久www免费人成看片高清| av一区二区在线看| 久草在现在线| 亚洲精品免费一二三区| 能在线观看的av| 99精品女人在线观看免费视频 | 羞羞视频在线观看不卡| 色综合一区二区三区| 国产精品一区二区小说| 精品资源在线| 久久精品国产电影| 国产嫩bbwbbw高潮| 国产乱码精品一区二区三区av | 一本色道久久hezyo无码| 成人免费在线观看av| 欧美精品九九久久| 91片黄在线观看喷潮| 久久欧美中文字幕| 国产夫妻自拍一区| 91成人app| 亚洲色无码播放| 国产亚洲第一页| 精品久久一区二区三区| 情侣黄网站免费看| 久久久久亚洲精品中文字幕| 亚洲欧美成人网| 久草成人在线视频| 蜜臀av在线播放一区二区三区| av成人在线电影| 成人亚洲性情网站www在线观看| 亚洲午夜成aⅴ人片| 在线黄色免费看| 欧美人妖在线| 国产91av在线| 人妻无码中文字幕免费视频蜜桃| 最好看的中文字幕久久| 亚洲xxxx2d动漫1| 精品在线99| 奇门遁甲1982国语版免费观看高清 | 99国产精品99久久久久久粉嫩| 51蜜桃传媒精品一区二区| 成人精品一区二区三区校园激情| 欧美性感美女h网站在线观看免费| 国产ts在线观看| 一区二区三区午夜探花| 91九色精品视频| 麻豆影视在线观看_| 91黄色小视频| 自拍偷拍视频亚洲| 岳乳丰满一区二区三区| 成人动漫在线一区| 丁香色欲久久久久久综合网| 国产一区二区| 日韩经典一区| 欧美日韩精品是欧美日韩精品| 国产精品久久久免费观看| 亚洲国产裸拍裸体视频在线观看乱了中文| 91免费看国产| 色呦呦在线视频| 精品成人一区二区三区| 国产污视频在线观看| 成人性色生活片| 欧美不卡在线播放| 偷拍精品福利视频导航| 欧美中文在线免费| 国产美女视频一区二区三区| 欧美无人高清视频在线观看| 亚洲毛片亚洲毛片亚洲毛片| 蜜桃视频一区二区三区| 亚洲综合激情五月| 一区二区在线免费播放| 久久久亚洲网站| 香蕉视频911| 欧美性高清videossexo| 中文字幕观看av| 国产不卡一区视频| 国产日韩一区二区在线| 欧美色蜜桃97| 亚洲综合一区二区不卡| 超碰在线99| 夜夜嗨av色一区二区不卡| 国产精品美腿一区在线看| 亚洲色图 校园春色| 色狠狠色噜噜噜综合网| 91香蕉视频网| 丁香网亚洲国际| avav在线看| 成人3d精品动漫精品一二三| 成人午夜一级二级三级| 欧美1—12sexvideos| 精品一区二区三区四区| 国产精品成人播放| 日韩在线观看视频一区| 色94色欧美sute亚洲13| 91视频青青草| 99精品桃花视频在线观看| 999精品视频在线| 欧美久色视频| 日本高清一区| 伊人久久大香线蕉av超碰| 日产精品99久久久久久| 3d玉蒲团在线观看| 亚洲片在线资源| www.xxx国产| 日本精品免费观看高清观看| 麻豆亚洲av熟女国产一区二| 久久一区二区视频| 成年人看片网站| 日本欧美一区二区三区| 日本五级黄色片| 日本一区二区高清不卡| 黄色一区三区| 精品网站999| 国产精选久久久久久| 国产在线美女| 欧美精品午夜视频| 中文字幕在线观看日本| 日韩精品亚洲视频| www.xxxx国产| 欧美日韩精品久久久| 色一情一乱一伦| 亚洲一卡二卡三卡四卡无卡久久 | 91色porny蝌蚪| 无码人妻一区二区三区精品视频| 蜜桃av噜噜一区| 久久美女福利视频| 影音先锋久久精品| av电影一区二区三区| av伊人久久| 蜜桃成人免费视频| 欧美爱爱网站| 懂色一区二区三区av片| 国产乱码精品一区二区三区亚洲人| 国产成人97精品免费看片| 国产羞羞视频在线播放| 久久91精品国产91久久久| 亚洲免费视频一区二区三区| 国产亚洲精品久久久久久牛牛| 天堂av资源在线| 亚洲国产精品电影在线观看| 精品国产va久久久久久久| 欧美久久一二区| 国产精品国产三级国产普通话对白 | 久久精品视频一区二区三区| 成人手机在线免费视频| 99精品国产视频| 特级西西人体wwwww| 9色porny自拍视频一区二区| 亚洲麻豆一区二区三区| 国产成人精品亚洲777人妖| 久久久九九九热| 国产一区二区免费在线| 国产美女视频免费看| 久久69国产一区二区蜜臀| 欧美三级午夜理伦三级富婆| 日韩影院在线观看| 国产一二三四在线视频| 蜜臀91精品一区二区三区| 国产一区二区在线免费播放| 奇米色一区二区| 最新天堂中文在线| 黄网站免费久久| 超碰在线免费av| 盗摄精品av一区二区三区| 五十路六十路七十路熟婆| av中文一区二区三区| 成人日韩视频| 在线视频欧美精品| 波多野结衣毛片| 欧美视频日韩视频在线观看| 亚洲性猛交富婆| 欧美日韩视频在线一区二区| 91亚洲欧美激情| 日韩视频一区二区三区在线播放| 深爱激情五月婷婷| 日韩成人高清在线| 国产专区在线| 久久精品视频在线| japanese色国产在线看视频| 日本精品视频网站| 免费日韩成人| 都市激情久久久久久久久久久| 老司机在线精品视频| 日本视频一区在线观看| 天天综合网91| 日本午夜激情视频| 日韩电影免费一区| 善良的小姨在线| 99精品欧美一区| 无码人妻精品中文字幕| 亚洲第一福利一区| 国产主播第一页| 日韩欧美另类在线| 暖暖视频在线免费观看| 久久精品国产亚洲一区二区| 91超碰在线播放| 国产精品自拍网| 麻豆精品av| 一区二区在线不卡| 1000部精品久久久久久久久| 538在线视频观看| 丁香另类激情小说| 天天舔天天操天天干| 亚洲不卡一区二区三区| 91在线观看喷潮| 欧美日韩一区二区三| 欧美在线色图| 国产一级不卡视频| 免播放器亚洲一区| 动漫美女无遮挡免费| 中文字幕乱码一区二区免费| 一区二区三区免费高清视频| 欧美日韩中字一区| 天天射天天操天天干| 中文字幕在线亚洲| 国产在线精彩视频| 91精品黄色| 欧美国产偷国产精品三区| 男人揉女人奶房视频60分| 国产乱国产乱300精品| 无码人妻丰满熟妇啪啪欧美| 亚洲高清不卡在线观看| 国产一区二区三区成人| 亚洲欧美另类人妖| 草草在线视频| 99久久免费国| 午夜精品一区二区三区国产| 九九九在线观看视频| 91女神在线视频| 国产精品自拍视频一区| 日韩写真欧美这视频| 五月婷婷在线观看| 国产精品久久久久久久久久尿| 欧美一区 二区| 国产www免费| 国产成人自拍高清视频在线免费播放| 成年人免费视频播放| 日本电影亚洲天堂一区| 婷婷婷国产在线视频| 欧美精品激情在线观看| 911亚洲精品| 成人av在线播放观看| 国产成人欧美日韩在线电影| 国产少妇在线观看| 欧美一区二区三区免费观看视频| 欧美被日视频| 国产精品激情自拍| 手机亚洲手机国产手机日韩| 亚洲人辣妹窥探嘘嘘| 中文字幕欧美区| 在线观看中文字幕码| 最近2019年手机中文字幕| 成人四虎影院| 亚洲综合五月天| 寂寞少妇一区二区三区| 婷婷久久综合网| 欧美成人一区二区三区在线观看| 亚洲电影视频在线| 国产精品18毛片一区二区| 亚洲国产高清一区二区三区| 国产亚洲色婷婷久久99精品91| 欧美日韩国产激情| 精品电影在线| 国产精品偷伦视频免费观看国产 | 欧美精品一区二区三区在线看午夜 | 精品无码一区二区三区在线| www.欧美.com| 亚洲 欧美 中文字幕| 色婷婷成人综合| 一区二区三区高清在线观看| 欧美,日韩,国产在线| 久久青草国产手机看片福利盒子| 国产精华7777777| 精品国产美女在线| 亚洲一区二区三区四区电影| av免费观看网| 国产日韩精品一区| 国产麻豆免费视频| 97婷婷涩涩精品一区| 精品国产91| 手机看片国产精品| 午夜私人影院久久久久| 国产三区四区在线观看| 91久久久久久久久久久久久| 亚洲高清久久| 五月天精品在线| 精品久久久久久久一区二区蜜臀| 中文字幕在线看片| 中文字幕中文字幕在线中心一区| 国产69精品久久99不卡| 一级做a爰片久久毛片| 日韩视频永久免费观看| 第四色中文综合网| 国产91色在线观看| 午夜精品一区二区三区三上悠亚 | 中文字幕av一区二区三区人| 亚洲一级片av| 色婷婷综合久久久久中文一区二区 |