我正在使用Lombok的@Data
和@Builder
注解,如下所示:
@Data
@Builder(toBuilder = true)
class Movie {
// Some other fields here.
private final List<Actor> actors;
}
当我使用构建器创建一个新的
电影
对象时,如果没有指定任何演员,我希望Lombok会将我的List初始化为Collections.emptyList()
。但是这并没有发生:List<Actor> actors = Movie.builder().build().getActors();
System.out.println(actors); // Prints 'null'.
在
@Builder
注释的文档中,Vanilla Java代码示例(https://projectlombok.org/features/Builder.html)的第55和56行指出我应该查看@Singular
的代码示例(https://projectlombok.org/features/Singular-snippet.html)。在此处的Vanilla Java示例的第112行中,似乎应该将列表初始化为空列表。我检查了一下,如果我使用
@Singular
对列表进行注释,确实会发生这种情况。@Data
@Builder(toBuilder = true)
class Movie {
// Some other fields here.
@Singular
private final List<Actor> actors;
}
List<Actor> actors = Movie.builder().build().getActors();
System.out.println(actors); // Prints '[]'.
这是Lombok的一个Bug吗?还是说我做错了什么?根据文档,两种情况下该列表都应该被初始化为空列表(因为
@Builder
文档引用了@Singular
文档)。