0

我想使用 Guava 的不可变类型(例如ImmutableList. 我还必须能够处理null输入并将其视为空集合。

我能想到的最干净的是:

  public void setStrings(List<String> strings) {
     this.strings = strings == null ? ImmutableList.of() : ImmutableList.copyOf(strings);
  }

有没有更易读的东西,最好没有三元运算符?Optional.of(strings).map(...).orElse(...)由于我与此答案共享的推理,我不会认为这是一个不错的选择。

4

1 回答 1

1

你可以使用MoreObjects.firstNonNull,它也来自 Guava:

public void setStrings(List<String> strings) {
     this.strings = ImmutableList.copyOf(MoreObjects.firstNonNull(strings, Collections.emptyList()));
}

或者ListUtils.emptyIfNull是 Apache Commons Collections 中类似但更专业的方法,我认为它更清晰,更容易阅读:

public void setStrings(List<String> strings) {
     this.strings = ImmutableList.copyOf(ListUtils.emptyIfNull(strings));
}
于 2020-07-10T13:42:31.290 回答