我想要构造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();
但它会生成警告:
静态方法
来自的orderedBy(比较器)
类型ImmutableSortedSet应该
以静态方式访问
没有
@SuppressWarnings("static-access")
怎么删除此警告?谢谢。 最佳答案
发出警告是因为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();