[英]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.