题
我有一种期望设定参数的方法。我想传递一个空套,我不希望该集合有任何副作用。
我可以通过传递以下收藏来做到这一点:
Collections.unmodifiableSet(Sets.newHashSet())
但是我想传递:
ImmutableSet.of()
如果我做前者 Set<Object>
是创建的,我得到的“方法不适用于args set'错误。如果我做后者,我会得到 ImmutableSet<Object>
是创建的,我收到类似的错误。
这起作用:
Collections.unmodifiableSet(new HashSet<String>())
...但是看起来很丑,我想找到一种Google收藏的方式。
解决方案
尝试这个:
ImmutableSet.<String>of()
这也将起作用:
Collections.<String>emptySet()
此语法对于任何时候输出输出时,对于手动指定类型参数而言都是有用的。 :-)
其他提示
这也将起作用:
public static void main(String[] args) {
Set<String> emptySet = ImmutableSet.of();
doStuffWith(emptySet);
}
static void doStuffWith(Set<String> strings) {
// ...
}
因为类型的推理注意到您要分配给 Set<String>
可变,并且知道类型参数必须为 String
.
不隶属于 StackOverflow