1 回答

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超10個贊
首先我要說的是,使用@Singular
不一定是最好的解決方案——這取決于您的用例。但是,在大多數(shù)情況下,如果您希望確保使用集合的類的不變性,那么這是一個不錯的選擇。
@Singular
其行為方式是因?yàn)?Lombok 設(shè)計師認(rèn)為這樣做是一個不錯的選擇。我同意:它使兩個 setter 方法的行為相似;在極少數(shù)情況下,您想要重置構(gòu)建器中的元素,您可以使用該clear
方法。
@Singular
生成相當(dāng)復(fù)雜的代碼,這是為了確保效率和不變性等屬性(也在重用構(gòu)建器來生成多個對象時)。當(dāng)您修改該代碼時,很容易違反這些屬性。Lombok 阻止你這樣做。
如果你真的想修改這方面,你有三個選擇:
delombok
構(gòu)建器代碼,將其復(fù)制到您的類中,然后修改它。添加另一個不同名稱的方法,例如
clearAndSetElements(List<String>)
.?但這可能更令人困惑。@Singular
自行刪除并實(shí)現(xiàn) setter 方法。如果你想要 Lombok 實(shí)現(xiàn)的特性,你就必須在實(shí)現(xiàn)上付出一些努力;您可以使用delombok
ed 代碼作為靈感。
添加回答
舉報