簡體   English   中英

如何使 Data lombok 返回 getter 方法的深層副本

[英]How to make Data lombok return deep copys of getter method

Spotbugs 給出以下錯誤警告:

[錯誤] 中:MetaData.getCreatedAt() 可以通過在 MetaData.java:[第 21 行] EI_EXPOSE_REP 返回 MetaData.createdAt [...MetaData] 來公開內部表示

為了解決這個問題,我認為我必須返回“createdAt”的深層副本。

有沒有直接用@Data 解決這個問題的解決方案?

不,沒有。 原因是為每個類創建防御性副本是不同的,最好的方法取決於您的用例。 龍目島無法知道您想要或需要什么。

例如,考慮具有可修改列表作為字段的可變類,即列表內容可能與getList()調用同時更改。 在某些情況下,返回一個Collections.unmodifiableList()可能是合理的,它將反映可能同時發生的列表更改。 在其他情況下,最好返回一個永不更改的列表,例如通過List.copyOf()創建列表的真實副本。 此外,如果列表中的對象也是可變的,您可能也需要克隆/復制這些對象。

所以如果你想返回一個防御副本,你必須手動實現getter。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM