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

歡迎訪問 生活随笔!

生活随笔

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

java

java冗余_Java使用lombok消除冗余代码的方法步骤

發布時間:2024/9/19 java 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java冗余_Java使用lombok消除冗余代码的方法步骤 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、項目背景

在寫Java程序的時候經常會遇到如下情形:

新建了一個Class類,然后在其中設置了幾個字段,最后還需要花費很多時間來建立getter和setter方法。

lombok項目的產生就是為了省去我們手動創建getter和setter方法的麻煩,它能夠在我們編譯源碼的時候自動幫我們生成getter和setter方法。即它最終能夠達到的效果是:在源碼中沒有getter和setter方法,但是在編譯生成的字節碼文件中有getter和setter方法。

比如源碼文件:

import java.io.Serializable;

import lombok.Data;

@Data

public class BasicClusterInfo implements Serializable {

private static final long serialVersionUID = 3478135817352393604L;

private String hbaseKey;

private int receiverCount;

}

以下是編譯上述源碼文件得到的字節碼文件,對其反編譯得到的結果

public class BasicClusterInfo extends java.lang.Object implements java.io.Serializable{

public BasicClusterInfo();

public java.lang.String getHbaseKey();

public int getReceiverCount();

public void setHbaseKey(java.lang.String);

public void setReceiverCount(int);

public boolean equals(java.lang.Object);

public boolean canEqual(java.lang.Object);

public int hashCode();

public java.lang.String toString();

}

二、eclipse安裝lombok

為IDE安裝lombok插件非常簡單,以eclipse環境為例,其安裝過程分為以下幾個步驟:

1)下載lombok.jar包

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

lombok的下載地址:https://projectlombok.org/download.html

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

2)運行lombok.jar

在windows命令行中輸入以下命令:

java -jar D:softwarelombok.jar

其中D:softwarelombok.jar這是windows下lombok.jar所在的位置, 數秒后將彈出以下對話框,以指定eclipse的安裝路徑。

3)確認完eclipse的安裝路徑后,點擊install/update按鈕,即可完成安裝。

4)安裝完成之后,請確認eclipse安裝路徑下是否多了一個lombok.jar包,并且其配置文件eclipse.ini中是否 添加了如下內容:

-javaagent:lombok.jar

-Xbootclasspath/a:lombok.jar

那么恭喜你已經安裝成功,否則將缺少的部分添加到相應的位置即可 。

5)重啟eclipse。

三、項目中使用lombok

在項目中使用lombok的方法很簡單,分為四個步驟:

1)在需要自動生成getter和setter方法的類上,加上@Data注解。

2)在編譯類路徑中加入lombok.jar包,若是maven工程,引入相關依賴即可。

org.projectlombok

lombok

1.16.18

3)使用支持lombok的編譯工具編譯源代碼(關于支持lombok的編譯工具,見“五、支持lombok的編譯工具”)。

4)編譯得到的字節碼文件中自動生成了getter和setter方法。

四、原理分析

接下來對lombok的工作原理進行分析,以Oracle的javac編譯工具為例。

自從Java 6起,javac就支持“JSR 269 Pluggable Annotation Processing API”規范,只要程序實現了該API,就能在javac運行的時候得到調用。

舉例來說,現在有一個實現了"JSR 269 API"的程序A,那么使用javac編譯源碼的時候具體流程如下:

1)javac對源代碼進行分析,生成一棵抽象語法樹(AST)。

2)運行過程中調用實現了"JSR 269 API"的A程序。

3)此時A程序就可以完成它自己的邏輯,包括修改第一步驟得到的抽象語法樹(AST)。

4)javac使用修改后的抽象語法樹(AST)生成字節碼文件。

詳細的流程圖如下:

五、支持lombok的編譯工具

1)由“四、原理分析”可知,Oracle javac直接支持lombok。

2)常用的項目管理工具Maven所使用的java編譯工具來源于配置的第三方工具,如果我們配置這個第三方工具為Oracle javac的話,那么Maven也就直接支持lombok了。

3)Intellij Idea配置的編譯工具為Oracle javac的話,也就直接支持lombok了。

4)Eclipse中使用的不是Oracle javac這個編譯工具,而是自己實現的Eclipse Compiler for Java (ECJ).要想使ECJ支持lombok,得進行設置,具體是在Eclipse程序目錄中的eclipse.ini文件中添加如下兩行設置:

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

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

六、常用lombok注解

lombok 提供的注解不多,可以參考官方視頻的講解和官方文檔。

Lombok 注解在線幫助文檔:http://projectlombok.org/features/index

下面是幾個比較常用的 lombok 注解:

@Data? ?:注解在類上;提供類所有屬性的 getting 和 setting 方法,此外還提供了equals、canEqual、hashCode、toString 方法

@Setter:注解在屬性上;為屬性提供 setting 方法

@Getter:注解在屬性上;為屬性提供 getting 方法

@Log4j:注解在類上;為類提供一個 屬性名為log 的 log4j 日志對象

@NoArgsConstructor:注解在類上;為類提供一個無參的構造方法

@AllArgsConstructor:注解在類上;為類提供一個全參的構造方法

七、其他問題

現在使用Intellij Idea作為Java項目的IDE,配置Oracle javac作為編譯工具。

現在有一個A類,其中有一些字段,沒有創建它們的setter和getter方法,使用了lombok的@Data注解,另外有一個B類,它調用了A類實例的相應字段的setter和getter方法。

編譯A類和B類所在的項目,并不會報錯,因為最終生成的A類字節碼文件中存在相應字段的setter和getter方法。但是,IDE發現B類源代碼中所使用的A類實例的setter和getter方法在A類源代碼中找不到定義,IDE會認為這是錯誤。

要解決以上這個不是真正錯誤的錯誤,可以下載安裝Intellij Idea中的"Lombok plugin"。

八、lombok的罪惡

使用lombok雖然能夠省去手動創建setter和getter方法的麻煩,但是卻大大降低了源代碼文件的可讀性和完整性,降低了閱讀源代碼的舒適度。

參考文獻:

[1]?http://stackoverflow.com/questions/6107197/how-does-lombok-work

[2]?https://projectlombok.org/download.html

[3]?http://stackoverflow.com/questions/3061654/what-is-the-difference-between-javac-and-the-eclipse-compiler

[4]?http://www.ibm.com/developerworks/library/j-lombok/

[5]?http://notatube.blogspot.com/2010/12/project-lombok-creating-custom.html

到此這篇關于Java使用lombok消除冗余代碼的方法步驟的文章就介紹到這了,更多相關Java lombok消除冗余代碼內容請搜索云海天教程以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持云海天教程!

原文鏈接:https://blog.csdn.net/pengjunlee/article/details/78692055

總結

以上是生活随笔為你收集整理的java冗余_Java使用lombok消除冗余代码的方法步骤的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产夫妻久久 | 麻豆成人久久精品一区二区三区 | 亚洲人掀裙打屁股网站 | 香蕉视频网站在线 | 精品国产鲁一鲁一区二区三区 | av鲁丝一区二区鲁丝 | 欧美成人乱码一区二区三区 | 久久久久久免费毛片精品 | 一区二区三区日韩电影 | 都市激情中文字幕 | 99精品网| 亚洲性生活片 | 亚洲欧美视频在线播放 | 人人干人人干 | 精品在线视频一区二区三区 | 久久婷婷影院 | 午夜av一区二区三区 | 成人福利视频在线 | 久久爱影视| 欧美日韩国产亚洲一区 | 看日本黄色录像 | 无码人妻aⅴ一区二区三区 国产高清一区二区三区四区 | 欧美性生活 | 国产一二在线 | 人妻 日韩精品 中文字幕 | 国产精品婷婷午夜在线观看 | 99久久精品久久久久久清纯 | 国产免费一区二区三区最新不卡 | 精品久久人人妻人人做人人 | av无限看| 欧美bbw视频 | 中文字幕日韩电影 | 91在线视频播放 | 欧美a一级 | 久久精品男人 | 国产原创在线 | 18岁毛片 | 不用播放器av | 成人久久国产 | 天堂中文字幕在线观看 | 伊人69| 久久精品欧美一区二区三区麻豆 | 男男啪啪无遮挡 | 人妻少妇精品一区二区 | 成人高潮片免费视频 | 国产欧美一区二区在线 | 波多野结衣亚洲视频 | 国产一级片免费 | 亚洲AV无码久久精品浪潮 | 国产午夜精品久久久 | 强公把我次次高潮hd | 看国产黄色片 | 在线免费播放 | 欧美日韩成人在线视频 | 午夜精品导航 | 欧美午夜精品久久久久久人妖 | 亚洲最大网站 | 人妻精品一区二区三区 | 法国极品成人h版 | 丰满人妻一区二区三区性色 | 亚洲人人干 | 九九九精品视频 | 麻豆蜜桃av| 91午夜免费视频 | 在线观看免费日韩av | 天堂婷婷 | 国产乱码精品一区二区三区不卡 | 内射干少妇亚洲69xxx | 久久久久这里只有精品 | 精品国精品国产 | 91亚洲在线 | 国产成a人亚洲精v品在线观看 | 亚洲精品一区二区三区蜜桃久 | 波多在线播放 | 久草热播 | 手机看片一区二区 | 韩日视频在线观看 | 免费在线看黄色片 | 欧美永久免费 | 免费亚洲视频 | 久久久久99精品成人片毛片 | 国产乱妇4p交换乱免费视频 | 黄色网址在线免费 | 久久97视频 | 极品人妻一区二区 | 黄视频在线观看免费 | 日皮视频在线观看 | 四虎永久免费在线观看 | 中文字幕一区二区三区四区视频 | 99er久久| 四虎影视免费永久观看在线 | 色综合av | 一区二区三区在线免费观看 | 国产在线1 | 国产三级av在线 | 日韩av影片 | 日韩一级中文字幕 | 一本色道久久综合无码人妻 | 91av不卡|