java - Lombok 注释给出恶意代码错误 - 可能通过返回对可变对象的引用来暴露内部表示错误
问题描述
我有以下课程。
// Adding Lombok's @Data / @Value gives an error
public class Sample {
String id;
String name;
Dummy[] entries;
@JsonCreator
// @Builder --> This gives same error
private Sample(
@JsonProperty("id") final String id,
@JsonProperty("name") final String name,
@JsonProperty("entries") @NonNull final Dummy[] entries) {
this.id = id;
this.name = name;
this.entries = entries;
}
}
如果我添加 Lomobok 注释,我会收到以下错误。我们严重依赖 Lombok,我正在尝试弄清楚如何确保不返回可变对象。
EI_EXPOSE_REP: May expose internal representation by returning reference to mutable object
EI_EXPOSE_REP2: May expose internal representation by incorporating reference to mutable object
作为替代方案,我可以使用 List 而不是 Array 并依赖 @Singular 注释。但我想知道是否有带有 Lombok 注释的 Array 的解决方法。
解决方案
解决此问题的一种方法是添加一些 lombok 配置。执行此操作的方法是在项目的根目录(与您的 pom.xml/build.gradle 相同的位置)添加一个名为:
lombok.config
.
在此文件中添加以下行:
config.stopBubbling = true
lombok.addLombokGeneratedAnnotation = true
lombok.extern.findbugs.addSuppressFBWarnings = true
lombok.anyConstructor.addConstructorProperties = true
推荐阅读
- python - 使用 groupby 时返回索引值
- mysql - 使用sql计算一天中多条记录之间的时间差
- mysql - SqlAlchemy 打印 MySQL 表的步骤?
- python - 填充多个数组以获得与最大数组相同的形状
- html - DIV 高度为 100% 的多个 CSS 问题以及其中的内容
- active-directory - 使用 Microsoft Graph API 创建应用程序角色
- apache - Apache 2.4 剥离查询参数并将其添加为标头
- r - 用 purrr 提高批量预测的速度
- django - Django 2 使评论提交错误
- kubernetes - Kubectl 补丁返回“未修补”