我使用的是Lombok @Builder
注释,但我希望某些String
字段是可选的,默认为""
以避免使用NPE。是否有捷径可寻?我找不到任何东西。
或者,如果变量为@Getter
,则可以自定义null
以返回默认值。
答案 0 :(得分:7)
从版本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。如果它不应该是可设置的 在建设期间,让场地最终。
答案 1 :(得分:3)
您必须提供如下构建器类:
@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"
。
答案 2 :(得分:2)
另一种方法是使用@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();
对于accepted answer,这种方法对于类重命名不太合理。如果您重命名XYZ
但忘记重命名内部静态类XYZBuilder
,那么魔法就消失了!
完全由你来使用你喜欢的方法。