在Lombok中使用@Builder或@Getter注释的默认字段值

时间:2016-10-28 23:16:38

标签: java getter builder lombok

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

或者,如果变量为@Getter,则可以自定义null以返回默认值。

3 个答案:

答案 0 :(得分:7)

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

  

@Builder.Default可让您配置字段的默认值   使用@Builder时。

示例:

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

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

PS:如果您没有使用@Builder.Default,他们也会添加警告。

  

警告:(35,22)java:@Builder将忽略初始化   表达完全。如果要使用初始化表达式   默认情况下,添加@ Builder.Default。如果它不应该是可设置的   在建设期间,让场地最终。

答案 1 :(得分:3)

您必须提供如下构建器类:

@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"

答案 2 :(得分:2)

另一种方法是使用@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();

对于accepted answer,这种方法对于类重命名不太合理。如果您重命名XYZ但忘记重命名内部静态类XYZBuilder,那么魔法就消失了!

完全由你来使用你喜欢的方法。