Lombok 中带有@Builder 或@Getter 注释的默认字段值

Default field value with @Builder or @Getter annotation in Lombok

我正在使用 Lombok @Builder 注释,但我希望某些 String 字段是可选的并且默认为 "" 以避免 NPE。是否有捷径可寻?我找不到任何东西。

或者,如果变量是 null.

,则可以将 @Getter 自定义为 return 默认值

您必须提供构建器 class,如下所示:

@Builder
public class XYZ {
    private String x;
    private String y;
    private String z;

    private static class XYZBuilder {
        private String x = "X";
        private String y = "Y";
        private String z = "Z";
    }
}

那么 xyz 的默认值将是 "X""Y""Z".

另一种方法是使用 @Builder(toBuilder = true)

@Builder(toBuilder = true)
public class XYZ {
    private String x = "X";
    private String y = "Y";
    private String z = "Z";
}

然后按如下方式使用它:

new XYZ().toBuilder().build();

相对于,这种方法对class重命名不太敏感。如果重命名 XYZ 但忘记重命名内部静态 class XYZBuilder,那么魔法就消失了!

完全取决于您使用自己更喜欢的方法。

从版本 v1.16.16 开始,他们添加了 @Builder.Default

@Builder.Default lets you configure default values for your fields when using @Builder.

示例:

@Setter
@Getter
@Builder
public class MyData {
  private Long id;
  private String name;

  @Builder.Default
  private Status status = Status.NEW;
}

PS: 很高兴他们还添加了警告,以防你没有使用 @Builder.Default.

Warning:(35, 22) java: @Builder will ignore the initializing expression entirely. If you want the initializing expression to serve as default, add @Builder.Default. If it is not supposed to be settable during building, make the field final.