如何抑制龙目岛警告

Buk*_*gey 7 java lombok java-annotations

我有一个实体

@Builder
class MyEntity {
   private Set<OtherEntitiy> children = new HashSet<>()
}
Run Code Online (Sandbox Code Playgroud)

而且我收到龙目岛警告。

警告:@Builder将完全忽略初始化表达式。如果要将初始化表达式用作默认表达式,请添加@ Builder.Default。如果在构建期间不应设置该字段,请将该字段定为最终字段。设置=新的HashSet <>();

问题是:我该如何抑制龙目岛的警告?

也。我需要初始化子级,因为我想避免NullPointerException。我也不能将其标记为最终文件,因为它实际上不是最终文件。我无法标记为已归档,@Builder.Default因为我不仅要使用builder来创建该实体,而且想保存其他构造函数的默认值。

Dan*_*aub 7

使用@Builder.Default添加默认的行为为您Builder

@Builder
class MyEntity {
   @Builder.Default
   private Set<String> children = new HashSet<>();
}
Run Code Online (Sandbox Code Playgroud)

您在定义了默认值的字段上使用它,Lombok
然后在

@Builder.Default添加对象创建功能期间将拾取该值。lombok v1.16.16. 因此,如果您使用的是较低版本的Lombok 它将无法使用它。

  • 当 OP 说“我无法标记已归档的 @Builder.Default 因为...”时,这怎么可能是公认的答案? (5认同)
  • v1.16.16 中存在一个已知问题/错误。这是链接:https://github.com/rzwitserloot/lombok/issues/1347。此注释从字段声明中删除了默认初始化,这会破坏无参数构造函数(如果有),因为使用它不会再初始化字段。 (2认同)