我要构造 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);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top