0

我有以下代码:

private static final ImmutableMultimap<String, String> namesToAddress;

public static List<String> getAddresses(String name){
  return ImmutableList.copyOf(namesToAddress.get(name));
}

我的问题是这里的防御性 copyOf() 是否必要,因为 get() 无论如何都会返回一个不可变的列表?

注意我使用的是来自 Google Guava 的 ImmutableMultiimap。

谢谢。

4

1 回答 1

5

几件事(主要在评论中介绍,但作为答案):

  • 如果你使用ImmutableListMultimapas 的类型namesToAddressesget()将返回一个ImmutableList; 无需致电copyOf或施放或其他任何东西
  • 即使你不这样做,ImmutableMultimap.get()也会返回一个ImmutableCollection; ImmutableCollections 有一种asList()方法来查看(或在必要时复制)集合作为ImmutableList
  • 无论如何,调用ImmutableList.copyOf(ImmutableCollection)最终都会调用asList()集合
于 2016-04-14T18:15:55.433 回答