簡體   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