我要建造ImmutableSortedSet。我编写了smt代码如下:
Set<String> obj = new HashSet<String>();
Comparator<String> myComparator = new Comparator<String>(){
@Override
public int compare(String o1, String o2) {
return 0;
}
};
Set<String> ordered = ImmutableSortedSet.copyOf(obj)
.orderedBy(myComparator).build();但它会产生警告:
类型ImmutableSortedSet的静态方法orderedBy(比较器)应该以静态方式访问
如何在不使用@SuppressWarnings("static-access")的情况下删除此警告?谢谢。
发布于 2010-12-10 16:12:58
它给出了警告,因为orderedBy是一个静态方法,并且在ImmutableSortedSet的一个实例上调用它。这通常意味着,当你真的在做其他事情时,你会认为你在做一件事,这就是这里的情况。
结果是这段代码不会像你想的那样.它将丢弃由ImmutableSortedSet创建的copyOf(obj) (它只用于访问静态方法orderedBy,它可以直接使用)并返回一个空集,就好像您刚刚调用了ImmutableSortedSet.orderedBy(myComparator).build()一样。
下面是您想要做的事情(正如R. Bemrose所说):
ImmutableSortedSet<String> ordered = ImmutableSortedSet.copyOf(myComparator, obj);对于后人,下面是我一开始匆忙发布的内容(结果相同):
ImmutableSortedSet<String> ordered = ImmutableSortedSet.orderedBy(myComparator)
.addAll(obj).build();发布于 2010-12-10 16:17:04
在查看了番石榴ImmutableSortedSet文档之后,您似乎实际上希望将其他重载之一加载到copyOf。
具体来说,您需要copyOf(Comparator, Collection)重载:
Set<String> ordered = ImmutableSortedSet.copyOf(myComparator, obj);https://stackoverflow.com/questions/4410779
复制相似问题