第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何使用 Lombok 將具有許多對(duì)象作為字段的類實(shí)例化?

如何使用 Lombok 將具有許多對(duì)象作為字段的類實(shí)例化?

皈依舞 2021-10-13 16:13:21
我有一個(gè)存儲(chǔ)許多字段的類(原始類型和對(duì)象,如Stringor List)。所有字段都是必需的,并且只需要在創(chuàng)建對(duì)象時(shí)設(shè)置一次。在確保滿足這些條件的同時(shí),使用 Lombok 實(shí)例化它的正確方法是什么:1) 由于 Setter 返回可變對(duì)象的風(fēng)險(xiǎn),沒(méi)有警告。2) 不要使用構(gòu)造函數(shù)來(lái)實(shí)例化所有字段,因?yàn)樽侄螖?shù)可以大于 10。3)能夠繼承和擴(kuò)展這個(gè)類,其中每個(gè)子類只會(huì)增加更多的字段,其他什么都不做。4) 序列化友好(即有一個(gè)空的公共構(gòu)造函數(shù))。class ParentData {    int id;    String name;}class ChildData extends ParentData {    long childId;    long[] friendId;    String[] friendNames;}目前,即使我將字段設(shè)置為private final,我也會(huì)收到 findBugs 錯(cuò)誤,即[]對(duì)象是可變的。
查看完整描述

2 回答

?
絕地?zé)o雙

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個(gè)贊

也許你可以看看lombok的Builder


查看完整回答
反對(duì) 回復(fù) 2021-10-13
?
瀟湘沐

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超6個(gè)贊

如果約束 3 意味著您想限制子類可以做什么(即確保它們永遠(yuǎn)不會(huì)可變),那么這是不可滿足的,因?yàn)槟鸁o(wú)法在 Java 中對(duì)子類強(qiáng)制執(zhí)行不變性。如果這意味著“應(yīng)該可以添加字段”,那么一切都很好。

這就是說(shuō),你應(yīng)該去@SuperBuilder,并@Getter在課程。使用帶有@Singular; 的集合而不是數(shù)組。Lombok 的 SuperBuilder 將使用不可變的集合類。使用@NonNull所需的字段。@NoArgsConstructor為子類和序列化框架添加一個(gè)。

我認(rèn)為這是 Lombok 所能獲得的最好的結(jié)果。你的 linter 可能仍然會(huì)發(fā)出警告,但至少部分是因?yàn)樯傻拇a對(duì)它來(lái)說(shuō)太復(fù)雜了。

PS:使用當(dāng)前的 Lombok edge 版本 1.18.3 或等待 1.18.4 版本@NonNull@SuperBuilder.


查看完整回答
反對(duì) 回復(fù) 2021-10-13
  • 2 回答
  • 0 關(guān)注
  • 251 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)