繁体   English   中英

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

[英]Default field value with @Builder or @Getter annotation in Lombok

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

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

从版本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。 如果在建筑期间不应该设置,请将该字段设为最终。

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

@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();

对于已接受的答案 ,这种方法对于类重命名不太明智。 如果重命名XYZ但忘记重命名内部静态类XYZBuilder ,那么魔法就消失了!

您可以使用您更喜欢的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM