我有以下代码:
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。
感谢。
答案 0 :(得分:5)
一些事情(大部分都在评论中,但作为答案):
ImmutableListMultimap
作为namesToAddresses
的类型,get()
将返回ImmutableList
;无需致电copyOf
或演员或其他ImmutableMultimap.get()
也会返回ImmutableCollection
; ImmutableCollection
有一个asList()
方法可以将该集合视为ImmutableList
ImmutableList.copyOf(ImmutableCollection)
最终会在收藏中调用asList()