日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

lombok 生成代码_使用Project Lombok减少Java应用程序中的样板代码

發布時間:2023/12/3 java 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 lombok 生成代码_使用Project Lombok减少Java应用程序中的样板代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

lombok 生成代碼

對Java編程語言最常提出的批評之一是它需要大量的樣板代碼 。 對于簡單的類尤其如此,該類只需要存儲一些值就可以。 您需要這些值的getter和setter方法,也許您還需要一個構造函數,覆蓋equals()和
hashcode()通常是必需的,也許您想要一個更有用的toString()實現。 最后,您可能有100行代碼,可以用10行Scala或Groovy代碼重寫。 諸如Eclipse或IntelliJ的Java IDE試圖通過提供各種類型的代碼生成功能來減少此問題。 但是,即使不必自己編寫代碼,如果在IDE中打開這樣的文件,也總是會看到它(并被它分散注意力)。


Lombok項目 (不要被丑陋的網頁所嚇倒)是一個小的Java庫,可以幫助減少Java應用程序中的樣板代碼量。 Lombok項目提供了一組注釋,這些注釋在開發時會進行處理,以將代碼注入Java應用程序。 注入的代碼可立即在您的開發環境中使用。

讓我們看一下下面的Eclipse屏幕截圖:


定義的類使用Lombok的@Data注釋進行注釋,并且最多包含三個私有字段。 @Data自動注入getter,setter(用于非final字段),equals(),hashCode(),toString()和用于初始化final dateBirth字段的構造函數。 如您所見,生成的方法可直接在Eclipse中使用,并顯示在Outline視圖中。

建立

要為您的應用程序設置Lombok,必須將lombok.jar放入類路徑。 如果您使用的是Maven,則只需將以下依賴項添加到pom.xml中:

<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.14.6</version><scope>provided</scope> </dependency>

您還需要在使用的IDE中設置Lombok:

  • NetBeans用戶只需在其項目屬性中啟用“在編輯器中啟用注釋處理”選項即可(請參閱: NetBeans說明 )。
  • Eclipse用戶可以通過雙擊lombok.jar并遵循快速安裝向導來安裝Lombok。
  • 對于IntelliJ,可以使用Lombok插件 。

入門

簡介中顯示的@Data注釋實際上是其他各種Lombok注釋的快捷方式。 有時@Data做得太多。 在這種情況下,您可以使用更具體的Lombok注釋,從而為您提供更大的靈活性。

使用@Getter和@Setter可以僅生成getter和setter:

@Getter @Setter public?class?Person?{private?final?LocalDate?birthday;private?String?firstName;private?String?lastName;public?Person(LocalDate?birthday)?{this.birthday?=?birthday;} }

請注意,布爾字段的getter方法以is代替get的前綴(例如isFoo()代替getFoo())。 如果只想為特定字段生成getter和setter,則可以注釋這些字段而不是類。

生成equals(),hashCode()和toString():

@EqualsAndHashCode @ToString public?class?Person?{... }

@EqualsAndHashCode和@ToString也具有各種可用于自定義其行為的屬性:

@EqualsAndHashCode(exclude?=?{"firstName"}) @ToString(callSuper?=?true,?of?=?{"firstName",?"lastName"}) public?class?Person?{... }

在此,equals()和hashCode()不會考慮firstName字段。 toString()將首先調用super.toString(),并且僅考慮firstName和lastName。

對于生成構造函數,可以使用多個注釋:

  • @NoArgsConstructor生成不帶參數的構造函數(默認構造函數)。
  • @RequiredArgsConstructor為所有未初始化的最終字段生成一個帶有一個參數的構造函數。
  • @AllArgsConstructor為類中的所有字段生成一個帶有一個參數的構造函數。

@Data批注實際上是@ ToString,@ EqualsAndHashCode,@ Getter,@ Setter和@RequiredArgsConstructor的常用快捷方式。

如果您喜歡不可變的類,則可以使用@Value代替@Data:

@Value public?class?Person?{LocalDate?birthday;String?firstName;String?lastName; }

@Value是@ ToString,@ EqualsAndHashCode,@ AllArgsConstructor,@ FieldDefaults(makeFinal = true,level = AccessLevel.PRIVATE)和@Getter的快捷方式。

因此,使用@Value可以獲取toString(),equals(),hashCode(),getter和具有每個字段一個參數的構造函數。 默認情況下,它也將所有字段設置為私有和最終,因此您不必添加私有或最終修飾符。

看Lombok的實驗功能

除了到目前為止顯示的受支持的注釋之外,Lombok還具有一些實驗功能,可以在“ 實驗功能”頁面上找到它們。

我特別喜歡的這些功能之一是@Builder批注,它提供了Builder模式的實現。

@Builder public?class?Person?{private?final?LocalDate?birthday;private?String?firstName;private?String?lastName; }

@Builder生成一個靜態builder()方法,該方法返回一個生成器實例。 此構建器實例可用于構建帶有@Builder注釋的類的對象(此處為Person):

Person?p?=?Person.builder().birthday(LocalDate.of(1980,?10,?5)).firstName("John").lastName("Smith").build();

順便說一句,如果您想知道LocalDate類是什么,就應該看看我有關Java 8日期和時間API的博客文章!

結論

Lombok計劃基于注釋注入生成的方法,例如getter和setter。 它提供了一種簡便的方法,可以大大減少Java應用程序中的樣板代碼。

請注意,這樣做有一個弊端:根據reddit評論 (包括項目作者的評論),Lombok必須依靠各種黑客手段才能完成工作。 因此,未來的JDK或IDE版本可能會破壞Lombok項目的功能。 另一方面,這些評論是5年前發表的,而Lombok計劃仍在積極維護。

  • 您可以在GitHub上找到Project Lombok的源代碼。

翻譯自: https://www.javacodegeeks.com/2014/09/reduce-boilerplate-code-in-your-java-applications-with-project-lombok.html

lombok 生成代碼

總結

以上是生活随笔為你收集整理的lombok 生成代码_使用Project Lombok减少Java应用程序中的样板代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91麻豆精品91久久久久同性 | 黑人巨大精品人妻一区二区 | 99日韩| 成人av专区 | 亚洲黄业 | 91精品黄色 | 精品亚洲一区二区三区四区五区 | 亚洲av人无码激艳猛片服务器 | 天天撸一撸 | 久久久久久网站 | 91夜色| 国产三极片 | 综合成人| 免费特黄视频 | 亚洲美女视频 | 国产一区二区三区视频在线 | 色乱码一区二区三区网站 | 日韩草比| 那里有毛片看 | 人妻激情偷乱视频一区二区三区 | 亚洲久草 | 国产成人无码性教育视频 | 亚洲高潮无码久久 | 成人在线一区二区三区 | 中文字幕在线视频免费观看 | 日韩小视频在线 | 国产网站黄| 欧美日韩中文一区 | 欧美日韩一区二区视频在线观看 | 欧美人一级淫片a免费播放 西方av在线 | www.伊人 | 福利在线一区二区三区 | 中文字幕乱码人妻二区三区 | 日本超碰 | 人人草人人爽 | 亚洲aaa视频 | 亚洲天堂av一区二区三区 | 中文资源在线播放 | 精品一区二区久久 | 亚洲二级片| 日韩在线小视频 | 少妇人妻丰满做爰xxx | 色屁屁一区二区 | 国产亚洲色婷婷久久 | 大尺度做爰呻吟舌吻网站 | 国产精品毛片一区视频播 | 亚欧洲精品 | 国产黄色大片网站 | 亚洲欧美国产另类 | 插我舔内射18免费视频 | 99热99在线 | 国模无码视频一区 | 性歌舞团一区二区三区视频 | 91免费在线视频观看 | 免费一级黄色大片 | 日本视频免费观看 | 色悠悠国产| 日av一区| 手机看片国产1024 | 成人h视频在线观看 | 能看的黄色网址 | 欧美一区二区在线播放 | 91免费看大片 | 99久久精品国产一区色 | 亚洲欧美激情小说另类 | 午夜私人影院 | 97蜜桃网 | 精品美女在线 | 少妇又色又紧又大爽又刺激 | 欧美日韩麻豆 | 夜夜操av| 中文字幕成人在线观看 | 国产精品久久久久久久久久久久久久久久 | 久久五月网 | 亚洲1级片| 综合色视频 | 国产91丝袜在线播放0 | av三级| 91成人在线看| 小色瓷导航| 美女搡bbb又爽又猛又黄www | 99久久影院| 亚洲二级片 | 成人自拍网站 | 欧美精品一级二级三级 | 免费视频www在线观看网站 | 男人插女人网站 | 日韩中文字幕在线免费观看 | 香蕉黄视频| 欧美一级片一区 | 日韩欧美视频一区二区三区 | 蕾丝视频污 | 久草福利视频 | 被扒开腿一边憋尿一边惩罚 | 欧美人成在线视频 | 国产麻豆午夜三级精品 | 神马午夜嘿嘿 | 婷婷视频| 成人在线免费小视频 |