我有一种期望设定参数的方法。我想传递一个空套,我不希望该集合有任何副作用。

我可以通过传递以下收藏来做到这一点:

 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.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top