【发布时间】:2015-12-25 19:16:35
【问题描述】:
我正在使用 Lombok 的 @Data 和 @Builder 注释,如下所示:
@Data
@Builder(toBuilder = true)
class Movie {
// Some other fields here.
private final List<Actor> actors;
}
当我使用构建器创建一个新的Movie 时,没有指定任何参与者,我希望 Lombok 将我的列表初始化为 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 中的错误,还是我做错了什么?根据文档,在这两种情况下,列表似乎都应该初始化为空列表(因为@Builder doc 指的是@Singular doc)。
【问题讨论】:
-
顺便说一句,我使用的是Lombok 1.16.6版。