我想要构造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();

09-27 00:24