java构造不带警告的ImmutableSortedSet
我想要构造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();
但它会产生警告:
The static method orderedBy(Comparator) from the type ImmutableSortedSet should be accessed in a static way
如何在没有@SuppressWarnings("static-access")
的情况下删除此警告?谢谢
# 1 楼答案
它给你这个警告是因为
orderedBy
是一个静态方法,你在ImmutableSortedSet
的实例上调用它。这通常意味着你认为你在做一件事,而实际上你在做另一件事,这里就是这样结果是这段代码不会做你认为它会做的事情。。。它将丢弃由
copyOf(obj)
创建的ImmutableSortedSet
(它仅用于访问静态方法orderedBy
,可以直接使用),并返回一个空集,就像您刚刚调用了ImmutableSortedSet.orderedBy(myComparator).build()
以下是您想要做的事情(正如R.Bemrose所说):
对于子孙后代,以下是我最初匆忙发布的内容(结果相同):
# 2 楼答案
在查看番石榴
ImmutableSortedSet
文档之后,似乎您实际上希望其他重载之一copyOf
具体来说,您需要^{} 重载: