Lombok注解之@SuperBuilder--解決無法builder父類屬性問題
前言:Lombok的小坑之 @Builder注解不能 build 父類屬性
正文在第三個目錄下,學習@SuperBuilder注解的話可以直接根據(jù)目錄跳到正文所在
一.老規(guī)矩
二.判斷是否為相同問題(@Builder注解不能 build 父類屬性)
前提情況判斷
首先是父類和子類的代碼情況這里直接附圖

會出現(xiàn)的基本常見(最常見問題)無法builder父類屬性

我們會看到這里面提示: 無法解析“SonObjectBuilder”中的方法“age”
三.@SuperBuilder注解
1. 概念(需要注意您的Lombok版本)
- @SuperBuilder在 lombok v1.18.2 中作為實驗性功能引入
- @SuperBuildertoBuilder`lombok v1.18.4 添加了對自定義 的功能和有限支持
- @SuperBuilderlombok v1.18.14 擴展了定制的可能性
2. 如何解決無法builder父類屬性
官網(wǎng)給出的方法
@SuperBuilder注釋為您的類生成復雜的構建器 API 。與 相比@Builder,@SuperBuilder也適用于超類中的字段。但是,它僅適用于類型。最重要的是,它要求所有超類也有@SuperBuilder注釋。
code這里依舊使用圖片來做對比展示

結果

不再提示: 無法解析“SonObjectBuilder”中的方法“age”解決問題!!!
3. 遇到的一個小坑(Lombok1.18.2)
- 這里只是簡單的處理了Builder注解沒有辦法builder屬性的問題
- 如果父子類都是您新建的那么問題不是很大
- 但是有一種可能就是父類已經(jīng)存在很久了,所以請檢查一下原本的父類在被@Builder修飾的時候有沒有在某一個參數(shù)上使用了@Builder.Default
前提條件依舊圖片展示

首先展示的是父子類
其次是builder代碼如下

我們可以發(fā)現(xiàn)emmmmmm,貌似idea并沒有提示什么,但是當我們進行編譯的時候就會發(fā)現(xiàn)(!!!)

我們找到是對應的第14行代碼

處理方法刪除子類的無參構造注解和父類的無參全參兩個注解如下圖

再次運行問題解決!!!(全體起立!)

對于1.18.10以上的版本此問題已經(jīng)被解決, 即@Builder.Default可以與@SuperBuilder在無參和全參構造注解的情況下使用
至于1.8.2至1.8.10之間版本本人沒有具體測試過,所以需要看情況進行使用
四.總結
對于lombok的@SuperBuilder----->>>注意版本注意版本還是注意版本!!!
其他功能這里暫時不做贅述,可以自己根據(jù)官網(wǎng)文檔進行嘗試,(以后可能更新)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
java將一個目錄下的所有數(shù)據(jù)復制到另一個目錄下
這篇文章主要為大家詳細介紹了java將一個目錄下的所有數(shù)據(jù)復制到另一個目錄下,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-08-08
Maven打包所有依賴到一個可執(zhí)行jar中遇到的問題
這篇文章主要給大家介紹了關于Maven打包所有依賴到一個可執(zhí)行jar中遇到的問題,將依賴打入jar包,由于maven管理了所有的依賴,所以將項目的代碼和依賴打成一個包對它來說是順理成章的功能,需要的朋友可以參考下2023-10-10
利用Java實現(xiàn)動態(tài)加載數(shù)據(jù)庫
這篇文章主要為大家詳細介紹了一個java小案例,即動態(tài)加載數(shù)據(jù)庫信息,文中的示例代碼簡潔易懂,具有一定的學習價值,感興趣的小伙伴可以了解一下2023-10-10

