【发布时间】:2020-07-10 13:32:23
【问题描述】:
我想制作一个使用 Guava 的不可变类型传递给方法的集合的防御性副本,例如一个ImmutableList。我还必须能够处理null 输入并将其视为空集合。
我能想到的最干净的是:
public void setStrings(List<String> strings) {
this.strings = strings == null ? ImmutableList.of() : ImmutableList.copyOf(strings);
}
有没有更易读的东西,最好没有三元运算符?由于我与this answer 分享的原因,我不会将Optional.of(strings).map(...).orElse(...) 视为一个不错的选择。
【问题讨论】:
-
我认为您当前的代码没有任何问题,除了您可能首先传入
null。 -
这是 Jackson 用于反序列化 JSON 的 DTO 中的代码。该接口有点模糊,因此应该可以传入空数组或
null并应用相同的语义。因此,很遗憾,这超出了我的控制范围。 -
那么我看不出你当前的代码有什么问题:)
标签: java coding-style guava defensive-copy