【发布时间】:2021-07-09 05:43:28
【问题描述】:
我有以下课程。
// 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 来实现 @Builder、Getter 和 Setter。所以我试图找出龙目岛是否可以使用数组?
-
Afaik 在 lombok 中不可能配置为生成不可变数组。您可以尝试使用
Arrays.copyOf自行为该字段实现getter。但我不确定这会有所帮助。 -
手写就行了。