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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

lombok 中的@Data注解

發(fā)布時間:2024/9/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 lombok 中的@Data注解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

今天看到有代碼中的Dao包中的類文件,寫的極其簡潔,甚至引起了開發(fā)工具InteliJ的報錯,然后程序還能穩(wěn)健地跑起來。

1

2

3

4

5

6

7

8

9

import?lombok.Data;

?

@Data

public?class?VaildCode {

?

????private?String? code;

????private?long????expTime;

?

}

原來是這個類加了@Data注解,所有Java代碼中不需要生成getters and setters,而在編譯的時候會自動生成getters and setters


點擊導(dǎo)入的包,查看到如下

?

查看到pom.xml文件中,對應(yīng)的依賴是

<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId> </dependency>常用的注解如下==

?

lombok?

https://projectlombok.org/

工作的原理分析,以O(shè)racle的javac編譯工具為例。
自從Java 6起,javac就支持“JSR 269 Pluggable Annotation Processing API”規(guī)范,只要程序?qū)崿F(xiàn)了該API,就能在javac運行的時候得到調(diào)用。
舉例來說,現(xiàn)在有一個實現(xiàn)了”JSR 269 API”的程序A,那么使用javac編譯源碼的時候具體流程如下:


javac對源代碼進行分析,生成一棵**抽象語法樹(AST) **
運行過程中調(diào)用實現(xiàn)了”JSR 269 API”的A程序
此時A程序就可以完成它自己的邏輯,包括修改第一步驟得到的抽象語法樹(AST)
javac使用修改后的抽象語法樹(AST)生成字節(jié)碼文件


所以lombok本質(zhì)上就是這樣的一個實現(xiàn)了”JSR 269 API”的程序。在使用javac的過程中,結(jié)合官方說明,它編譯的流程如下:


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

?

優(yōu)點:

能通過注解的形式自動生成構(gòu)造器、getter/setter、equals、hashcode、toString等方法,提高了一定的開發(fā)效率
讓代碼變得簡潔,不用過多的去關(guān)注相應(yīng)的方法
屬性做修改時,也簡化了維護為這些屬性所生成的getter/setter方法等


缺點:

不支持多種參數(shù)構(gòu)造器的重載
雖然省去了手動創(chuàng)建getter/setter方法的麻煩,但大大降低了源代碼的可讀性和完整性,降低了閱讀源代碼的舒適度

lombok的實現(xiàn):就是元注解出現(xiàn)后注解運行生命周期里面的編譯周期,這個就是 JSR 269 Pluggable Annotation Processing API,就是源代碼在編譯成字節(jié)碼的時候修改了語法樹的節(jié)點規(guī)則進行了加強生成,
以后可以更加快捷的敲代碼了。

?

知乎上對lombok插件得看法也兩極化,有人覺得簡化代碼,閱讀代碼更舒適;也有人極其反對,

?

只能說愛用不用,不用別詆毀。別人用了至少你要看得懂。

-------------------------?A little Progress a day makes you a big success...?----------------------------

?

來源:https://www.cnblogs.com/qianjinyan/p/9576939.html

總結(jié)

以上是生活随笔為你收集整理的lombok 中的@Data注解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。