龙目岛中带有@Builder或@Getter注释的默认字段值

2022-09-04 08:43:13

我正在使用龙目岛注释,但我希望某些字段是可选的,并且是默认的,以避免NPE。有没有一种简单的方法来做到这一点?我找不到任何东西。@BuilderString""

或者,一种自定义为返回默认值(如果变量为 )的方法。@Getternull


答案 1

从他们添加的版本开始。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;
}

附言:还好,如果您没有使用,他们还添加了警告。@Builder.Default

警告:(35, 22) java: @Builder将完全忽略初始化表达式。如果希望初始化表达式用作默认值,请添加@Builder.Default。如果在构建过程中不应设置,则使字段最终确定。


答案 2

您必须提供如下所示的生成器类:

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


推荐