1

我有一个需要 Set 参数的方法。我想传入一个空集,并且我不希望对 Set 产生任何副作用。

我可以通过传入来处理集合:

 Collections.unmodifiableSet(Sets.newHashSet())

但我想传入:

 ImmutableSet.of()

如果我执行前者,Set<Object>则会创建“方法不适用于 args Set”错误。如果我执行后者,ImmutableSet<Object>则会创建并得到类似的错误。

这有效:

 Collections.unmodifiableSet(new HashSet<String>())

...但看起来很难看,我想找到一种谷歌收藏的方式。

4

2 回答 2

10

试试这个:

ImmutableSet.<String>of()

这也可以:

Collections.<String>emptySet()

此语法对于在类型推断失败时手动指定类型参数很有用。:-)

于 2010-01-27T18:11:14.283 回答
0

这也将起作用:

public static void main(String[] args) {
    Set<String> emptySet = ImmutableSet.of();
    doStuffWith(emptySet);
}

static void doStuffWith(Set<String> strings) {
    // ...
}

因为类型推断注意到您正在分配给一个Set<String>变量并且知道类型参数必须是String.

于 2010-01-30T03:45:13.470 回答