[英]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";
}
}
然后x
, y
, z
的默認值將是"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.