我有一个需要Set参数的方法。我想传入一个空集,我不希望对Set有任何副作用。
我可以通过传递来收集馆藏:
Collections.unmodifiableSet(Sets.newHashSet())
但我想传入:
ImmutableSet.of()
如果我执行前者,则创建Set<Object>
并且我得到“方法不适用于args Set'错误。如果我执行后者,我会创建ImmutableSet<Object>
并且我得到类似的错误。< / p>
这有效:
Collections.unmodifiableSet(new HashSet<String>())
...但似乎很难看,我想找到一种Google Collections方式。
答案 0 :(得分:9)
试试这个:
ImmutableSet.<String>of()
这也可以:
Collections.<String>emptySet()
此语法对于在类型推断失败时手动指定类型参数很有用。 : - )
答案 1 :(得分:0)
这也有效:
public static void main(String[] args) {
Set<String> emptySet = ImmutableSet.of();
doStuffWith(emptySet);
}
static void doStuffWith(Set<String> strings) {
// ...
}
因为类型推断会注意到您要分配给Set<String>
变量,并且知道类型参数必须是String
。