首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构造没有警告的ImmutableSortedSet

构造没有警告的ImmutableSortedSet
EN

Stack Overflow用户
提问于 2010-12-10 16:07:29
回答 2查看 424关注 0票数 1

我要建造ImmutableSortedSet。我编写了smt代码如下:

代码语言:javascript
复制
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的静态方法orderedBy(比较器)应该以静态方式访问

如何在不使用@SuppressWarnings("static-access")的情况下删除此警告?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-10 16:12:58

它给出了警告,因为orderedBy是一个静态方法,并且在ImmutableSortedSet的一个实例上调用它。这通常意味着,当你真的在做其他事情时,你会认为你在做一件事,这就是这里的情况。

结果是这段代码不会像你想的那样.它将丢弃由ImmutableSortedSet创建的copyOf(obj) (它只用于访问静态方法orderedBy,它可以直接使用)并返回一个空集,就好像您刚刚调用了ImmutableSortedSet.orderedBy(myComparator).build()一样。

下面是您想要做的事情(正如R. Bemrose所说):

代码语言:javascript
复制
ImmutableSortedSet<String> ordered = ImmutableSortedSet.copyOf(myComparator, obj);

对于后人,下面是我一开始匆忙发布的内容(结果相同):

代码语言:javascript
复制
ImmutableSortedSet<String> ordered = ImmutableSortedSet.orderedBy(myComparator)
    .addAll(obj).build();
票数 4
EN

Stack Overflow用户

发布于 2010-12-10 16:17:04

在查看了番石榴ImmutableSortedSet文档之后,您似乎实际上希望将其他重载之一加载到copyOf

具体来说,您需要copyOf(Comparator, Collection)重载:

代码语言:javascript
复制
Set<String> ordered = ImmutableSortedSet.copyOf(myComparator, obj);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4410779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档