日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Java使用lombok消除冗余代碼的方法步驟

瀏覽:115日期:2022-08-21 15:15:28

一、項(xiàng)目背景

在寫(xiě)Java程序的時(shí)候經(jīng)常會(huì)遇到如下情形:

新建了一個(gè)Class類,然后在其中設(shè)置了幾個(gè)字段,最后還需要花費(fèi)很多時(shí)間來(lái)建立getter和setter方法。

lombok項(xiàng)目的產(chǎn)生就是為了省去我們手動(dòng)創(chuàng)建getter和setter方法的麻煩,它能夠在我們編譯源碼的時(shí)候自動(dòng)幫我們生成getter和setter方法。即它最終能夠達(dá)到的效果是:在源碼中沒(méi)有g(shù)etter和setter方法,但是在編譯生成的字節(jié)碼文件中有g(shù)etter和setter方法。

比如源碼文件:

import java.io.Serializable; import lombok.Data; @Data public class BasicClusterInfo implements Serializable { private static final long serialVersionUID = 3478135817352393604L; private String hbaseKey; private intreceiverCount; }

以下是編譯上述源碼文件得到的字節(jié)碼文件,對(duì)其反編譯得到的結(jié)果

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插件非常簡(jiǎn)單,以eclipse環(huán)境為例,其安裝過(guò)程分為以下幾個(gè)步驟:

1)下載lombok.jar包 lombok的官網(wǎng)地址:https://projectlombok.org/ lombok的下載地址:https://projectlombok.org/download.html lombok項(xiàng)目的Github地址:https://github.com/rzwitserloot/lombok

2)運(yùn)行l(wèi)ombok.jar 在windows命令行中輸入以下命令:

java -jar D:softwarelombok.jar

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

Java使用lombok消除冗余代碼的方法步驟

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

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

-javaagent:lombok.jar -Xbootclasspath/a:lombok.jar

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

5)重啟eclipse。

三、項(xiàng)目中使用lombok

在項(xiàng)目中使用lombok的方法很簡(jiǎn)單,分為四個(gè)步驟: 1)在需要自動(dòng)生成getter和setter方法的類上,加上@Data注解。 2)在編譯類路徑中加入lombok.jar包,若是maven工程,引入相關(guān)依賴即可。

<dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.18</version> </dependency></dependencies>

3)使用支持lombok的編譯工具編譯源代碼(關(guān)于支持lombok的編譯工具,見(jiàn)“五、支持lombok的編譯工具”)。 4)編譯得到的字節(jié)碼文件中自動(dòng)生成了getter和setter方法。

四、原理分析

接下來(lái)對(duì)lombok的工作原理進(jìn)行分析,以O(shè)racle的javac編譯工具為例。

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

舉例來(lái)說(shuō),現(xiàn)在有一個(gè)實(shí)現(xiàn)了'JSR 269 API'的程序A,那么使用javac編譯源碼的時(shí)候具體流程如下: 1)javac對(duì)源代碼進(jìn)行分析,生成一棵抽象語(yǔ)法樹(shù)(AST)。 2)運(yùn)行過(guò)程中調(diào)用實(shí)現(xiàn)了'JSR 269 API'的A程序。 3)此時(shí)A程序就可以完成它自己的邏輯,包括修改第一步驟得到的抽象語(yǔ)法樹(shù)(AST)。 4)javac使用修改后的抽象語(yǔ)法樹(shù)(AST)生成字節(jié)碼文件。

詳細(xì)的流程圖如下:

Java使用lombok消除冗余代碼的方法步驟

五、支持lombok的編譯工具

1)由“四、原理分析”可知,Oracle javac直接支持lombok。 2)常用的項(xiàng)目管理工具M(jìn)aven所使用的java編譯工具來(lái)源于配置的第三方工具,如果我們配置這個(gè)第三方工具為Oracle javac的話,那么Maven也就直接支持lombok了。 3)Intellij Idea配置的編譯工具為Oracle javac的話,也就直接支持lombok了。 4)Eclipse中使用的不是Oracle javac這個(gè)編譯工具,而是自己實(shí)現(xiàn)的Eclipse Compiler for Java (ECJ).要想使ECJ支持lombok,得進(jìn)行設(shè)置,具體是在Eclipse程序目錄中的eclipse.ini文件中添加如下兩行設(shè)置:

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

六、常用lombok注解

lombok 提供的注解不多,可以參考官方視頻的講解和官方文檔。 Lombok 注解在線幫助文檔:http://projectlombok.org/features/index 下面是幾個(gè)比較常用的 lombok 注解: @Data :注解在類上;提供類所有屬性的 getting 和 setting 方法,此外還提供了equals、canEqual、hashCode、toString 方法@Setter:注解在屬性上;為屬性提供 setting 方法@Getter:注解在屬性上;為屬性提供 getting 方法@Log4j :注解在類上;為類提供一個(gè) 屬性名為log 的 log4j 日志對(duì)象@NoArgsConstructor:注解在類上;為類提供一個(gè)無(wú)參的構(gòu)造方法@AllArgsConstructor:注解在類上;為類提供一個(gè)全參的構(gòu)造方法

七、其他問(wèn)題

現(xiàn)在使用Intellij Idea作為Java項(xiàng)目的IDE,配置Oracle javac作為編譯工具。

現(xiàn)在有一個(gè)A類,其中有一些字段,沒(méi)有創(chuàng)建它們的setter和getter方法,使用了lombok的@Data注解,另外有一個(gè)B類,它調(diào)用了A類實(shí)例的相應(yīng)字段的setter和getter方法。

編譯A類和B類所在的項(xiàng)目,并不會(huì)報(bào)錯(cuò),因?yàn)樽罱K生成的A類字節(jié)碼文件中存在相應(yīng)字段的setter和getter方法。但是,IDE發(fā)現(xiàn)B類源代碼中所使用的A類實(shí)例的setter和getter方法在A類源代碼中找不到定義,IDE會(huì)認(rèn)為這是錯(cuò)誤。

要解決以上這個(gè)不是真正錯(cuò)誤的錯(cuò)誤,可以下載安裝Intellij Idea中的'Lombok plugin'。

八、lombok的罪惡

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

參考文獻(xiàn):

[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

到此這篇關(guān)于Java使用lombok消除冗余代碼的方法步驟的文章就介紹到這了,更多相關(guān)Java lombok消除冗余代碼內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
青青草91视频| 最新日韩欧美| 国产精品伦一区二区| 国产一卡不卡| 国产精品主播在线观看| 国产精品资源| 精品亚洲成人| 伊人久久av| 亚洲一级黄色| 丝袜诱惑制服诱惑色一区在线观看 | 亚洲精品一区二区在线看| 久久国产成人午夜av影院宅| 亚洲h色精品| 精品欧美激情在线观看| av不卡在线| 涩涩涩久久久成人精品| 欧美精品影院| 久久这里只有| 欧美成人精品| 亚洲2区在线| 久久精品一区二区三区中文字幕| 91亚洲国产成人久久精品| 在线日韩电影| 久久性天堂网| 久久99精品久久久久久园产越南 | 99在线|亚洲一区二区| 免费黄网站欧美| 国产精品亚洲产品| 桃色av一区二区| 一区免费视频| 日本99精品| 激情黄产视频在线免费观看| 悠悠资源网久久精品| 亚洲欧美一级| 精品日本视频| 欧美在线亚洲| 国产欧美69| 久久国产中文字幕| 四虎精品永久免费| 成人三级高清视频在线看| 欧美福利在线| 日本少妇精品亚洲第一区| 97国产成人高清在线观看| 自由日本语亚洲人高潮| 日韩黄色免费网站| 日韩免费小视频| 综合亚洲视频| 日韩精品91| 日韩avvvv在线播放| 日韩一区二区中文| 午夜视频一区二区在线观看| 中文字幕人成乱码在线观看| 亚洲人成亚洲精品| 日产精品一区| 日本中文字幕一区二区视频| 国产夫妻在线| 日本欧美在线| 久久精品观看| 国产欧美三级| 亚洲高清影视| 日产午夜精品一线二线三线| 亚洲v天堂v手机在线| 99久久久久| 久久不卡国产精品一区二区| 亚洲精品网址| av免费不卡国产观看| 亚洲2区在线| 99精品在线观看| 美女久久精品| 美女久久网站| 成人精品天堂一区二区三区| 国产欧美一级| 日韩专区在线视频| 国产精品亚洲一区二区三区在线观看| 亚洲精一区二区三区| 日韩欧美字幕| 国产精品宾馆| 日韩精品三区四区| 日韩视频在线一区二区三区| 在线看片福利| 嫩呦国产一区二区三区av| 蜜桃一区二区三区在线| 精品国模一区二区三区| 麻豆国产精品777777在线| 亚洲美女久久| 亚洲精品一二三区区别| a日韩av网址| 久久精品国产精品亚洲毛片| 日韩精品成人在线观看| 欧美日韩中文字幕一区二区三区 | 日本久久黄色| 国产欧美一区二区精品久久久 | 欧美国产美女| 国产精品啊啊啊| 青青伊人久久| 亚洲人成亚洲精品| 亚洲欧美日韩国产综合精品二区 | www成人在线视频| 国产一区二区三区不卡视频网站 | 久久精品国产网站| 欧美三区不卡| 亚洲ww精品| 亚洲最大av| 夜久久久久久| 尤物在线精品| 亚洲欧洲一区| 亚洲免费播放| 午夜在线精品| 爽爽淫人综合网网站| 女同性一区二区三区人了人一| 日韩精品第一区| 国产在线观看91一区二区三区| 欧美久久一区二区三区| 日韩精品久久久久久| 婷婷综合国产| 色狠狠一区二区三区| 亚久久调教视频| 日本麻豆一区二区三区视频| 日日摸夜夜添夜夜添国产精品| 中文字幕日韩高清在线| 蜜臀国产一区二区三区在线播放| 亚洲免费在线| 在线视频亚洲欧美中文| 中文字幕av一区二区三区四区| 日韩一区精品字幕| 亚洲午夜免费| 日韩精品中文字幕一区二区| 亚洲精品日本| 国产日韩欧美三级| 国产精品久久免费视频| 国语精品一区| 神马日本精品| 欧美另类专区| 免费人成精品欧美精品| 亚洲资源在线| 国产欧美午夜| 高清不卡一区| 136国产福利精品导航网址| 午夜久久免费观看| 在线一区欧美| 午夜亚洲福利| 麻豆精品视频在线观看免费| 国产不卡av一区二区| 久久久9色精品国产一区二区三区| 欧美日韩国产高清| 少妇精品久久久| 国产极品模特精品一二| 国产资源在线观看入口av| 亚洲午夜一级| 香蕉久久一区| 国产成人1区| 欧美精品九九| 日韩精品免费观看视频| 国产精品免费不| 黄色在线网站噜噜噜| 天堂网在线观看国产精品| 日韩中出av| 精品资源在线| 99国产精品一区二区| 中文无码日韩欧| 久久一区亚洲| 亚洲欧洲日本mm| 日本不卡视频一二三区| 精品日产乱码久久久久久仙踪林| 欧美一级精品| 欧美亚洲国产日韩| 婷婷综合六月| 日韩在线卡一卡二| 免费一级欧美片在线观看网站 | 国产精品99视频| 亚洲欧美综合| 美国三级日本三级久久99| 久久99青青| 欧美精品一二| 国产精品中文| 伊人精品视频| 欧美国产三级| 在线 亚洲欧美在线综合一区| 国产欧美日本| 女人天堂亚洲aⅴ在线观看| 欧美视频一区| 欧美肉体xxxx裸体137大胆| 欧美久久亚洲| 91精品高清| 精品国产一区二区三区性色av| 亚洲神马久久| 美女精品视频在线| 99国产一区| 国内在线观看一区二区三区 | 日韩国产欧美视频| 久久久国产精品一区二区中文| 国产亚洲精aa在线看| 欧美日韩国产高清电影| 欧美韩一区二区| 蜜臀a∨国产成人精品| 日韩高清中文字幕一区二区| 91国内精品| 亚洲免费播放| 在线看片福利| 97久久亚洲|