构建无警告的ImmutablesTordest
-
08-10-2019 - |
题
我要构造 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订购的静态方法(比较器)应以静态方式访问
我如何在没有的情况下删除此警告 @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();
其他提示
看了番石榴之后 ImmutableSortedSet
文档,看来您实际上想要其他超载之一 copyOf
.
具体来说,您想要 copyOf(Comparator, Collection)
超载:
Set<String> ordered = ImmutableSortedSet.copyOf(myComparator, obj);
不隶属于 StackOverflow