【发布时间】:2016-04-14 17:19:19
【问题描述】:
我有以下代码:
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。
谢谢。
【问题讨论】:
-
ImmutableMultimap#get返回一个ImmutableCollection。没有必要复制它。但是,如果您需要List... -
在 Google Guava 文档中 (docs.guava-libraries.googlecode.com/git/javadoc/com/google/…) 它声明 mmutableMultimap#get 返回一个 ImmutableList
... -
另外,
ImmutableList.copyOf无论如何也不会真正复制ImmutableList。 -
@user1974753 你正在查看
ImmutableListMultimap,但你的代码有ImmutableMultimap。无论如何,它们都是不可变的。
标签: java guava immutability defensive-copy