没有@Builder的Lombok@value的默认值



有没有一种方法可以为用@Value注释的模型下的字段提供默认值。例如:

@Value
class Book {
String title;
List<String> authors;
}

在上面的模型中,Jackson将authors从json有效载荷反序列化为null,其中authors为null,但我希望author将[]作为默认值,而不是null。我知道下面的不起作用,因为字段由于@Value而变为private final

List<String> authors = Collections.emptyList();

我可以覆盖所有args构造函数,但模型本身相当大,所以我正在寻找类似于Builder.Default但适用于@Value的东西。

您可以添加自己的构造函数来初始化authors字段。

@Value
@AllArgsConstructor
static class Book {
String title;
List<String> authors;
public Book(String title) {
this(title, Collections.emptyList());
}
}

@AllArgsConstructor是必需的,因为添加自定义构造函数时,@Value跳过了所有字段构造函数的生成。

最新更新