gpt4 book ai didi

java - Lombok @Builder 未初始化集合

转载 作者:IT老高 更新时间:2023-10-28 20:27:10 27 4
gpt4 key购买 nike

我正在使用 Lombok 的 @Data@Builder像这样的注释:

@Data
@Builder(toBuilder = true)
class Movie {

// Some other fields here.

private final List<Actor> actors;

}

当我创建一个新的 Movie使用构建器,不指定任何 Actor ,我希望 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 中的错误,还是我做错了什么?根据文档,在这两种情况下似乎都应该将列表初始化为空列表(因为 @Builder 文档引用了 @Singular 文档)。

最佳答案

仅当您使用 @Singular 时,您会得到一个空列表。在 Builder documentation page它说:

…with the @Singular annotation, lombok will treat that builder node as a collection.

没有 @Singular,lombok 将其视为任何其他对象。所以它将是 null 而不是一个空的 Collection。

披露:我是 Lombok 开发人员

关于java - Lombok @Builder 未初始化集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32824821/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com