質問

構成が欲しいです 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. 。これは、実際に何か他のことをしているとき、あなたが1つのことをしていると思うことを意味します。

その結果、このコードはあなたが思うことをすることはできません...それは ImmutableSortedSet によって作成された copyOf(obj) (静的方法へのアクセスにのみ使用されています orderedBy, 、直接使用することができます)、まるで電話をかけたかのように空のセットを返します ImmutableSortedSet.orderedBy(myComparator).build().

これがあなたがやりたいことです(R.ベムローズが言ったように):

ImmutableSortedSet<String> ordered = ImmutableSortedSet.copyOf(myComparator, obj);

後世のために、ここに私が最初に急いで投稿したものがあります(これは同じ結果があります):

ImmutableSortedSet<String> ordered = ImmutableSortedSet.orderedBy(myComparator)
    .addAll(obj).build();

他のヒント

グアバを見た後 ImmutableSortedSet ドキュメント、あなたは実際に他の過負荷の1つを実際に望んでいるようです copyOf.

具体的には、 copyOf(Comparator, Collection) 過負荷:

Set<String> ordered = ImmutableSortedSet.copyOf(myComparator, obj);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top