Lombok同時(shí)使?@Data和@Builder 的坑
往期熱門文章:
1、IntelliJ IDEA快捷鍵大全 + 動(dòng)圖演示,建議收藏! 2、如何防止你的 jar 被反編譯? 3、大公司為什么禁止SpringBoot項(xiàng)目使用Tomcat? 4、Java 8 的 Stream 不好調(diào)試?別逗了!IDEA 調(diào)試就能輕松搞定!! 5、如何用 Java 幾分鐘處理完 30 億個(gè)數(shù)據(jù)? 問(wèn)題背景

Lombok @Data和@Builder分別單獨(dú)分析用法
編譯后的class為:可以看到不僅幫我們生成了get和set ,同時(shí)也有默認(rèn)的無(wú)參構(gòu)造器





解決方法
方法一

方法二

Lombok原理
Lombok 使?的是 JDK 6 實(shí)現(xiàn)的 JSR 269: Pluggable Annotation Processing API (編譯期的注解處理器),它是在編譯期時(shí)把 Lombok 的注解代碼,轉(zhuǎn)換為常規(guī)的 Java ?法?實(shí)現(xiàn)注?。 在編譯期階段,當(dāng) Java 源碼被抽象成語(yǔ)法樹(shù) (AST) 之后,Lombok 會(huì)根據(jù)??的注解處理器動(dòng)態(tài)的修改AST,增加新的代碼 (節(jié)點(diǎn)),在這?切執(zhí)?之后,再通過(guò)分析?成了最終的字節(jié)碼 (.class) ?件,這就是Lombok 的執(zhí)?原理。
?定義?個(gè)注解標(biāo)簽接?,并實(shí)現(xiàn)?個(gè)?定義的注解處理器; 利? tools.jar 的 javac api 處理 AST (抽象語(yǔ)法樹(shù))3. 使??定義的注解處理器編譯代碼。








總結(jié)
轉(zhuǎn)自:https://juejin.cn/post/7103011031672176677
鏈接:樹(shù)洞君
往期熱門文章:
1、計(jì)算機(jī)專業(yè)會(huì)不會(huì)成為下一個(gè)土木? 2、xxl-job驚艷的設(shè)計(jì),怎能叫人不愛(ài) 3、ArrayList#subList這四個(gè)坑,一不小心就中招 4、面試官:大量請(qǐng)求 Redis 不存在的數(shù)據(jù),從而影響數(shù)據(jù)庫(kù),該如何解決? 5、MySQL 暴跌! 6、超越 Xshell!號(hào)稱下一代 Terminal 終端神器,用完愛(ài)不釋手! 7、IDEA 官宣全新默認(rèn) UI,太震撼了!! 8、讓你直呼「臥槽」的 GitHub 項(xiàng)目! 9、Kafka又笨又重,為啥不選Redis? 10、50多個(gè)高頻免費(fèi) API 接口分享
評(píng)論
圖片
表情
