質問

セットパラメーターを期待するメソッドがあります。空のセットを渡したいのですが、セットに副作用がしたくありません。

私はこれを受け取ることでコレクションでこれを行うことができます:

 Collections.unmodifiableSet(Sets.newHashSet())

しかし、私は渡したいです:

 ImmutableSet.of()

私が前者をする場合a Set<Object> 作成され、「Args Set 'エラーに適用されないメソッドが取得されます。後者を行うと、 ImmutableSet<Object> 作成され、同様のエラーが発生します。

これは機能します:

 Collections.unmodifiableSet(new HashSet<String>())

...しかし、醜いようです、そして私はGoogleコレクションの方法を見つけたいです。

役に立ちましたか?

解決

これを試して:

ImmutableSet.<String>of()

これも機能します:

Collections.<String>emptySet()

この構文は、タイプの推論が失敗したときにタイプの引数を手動で指定するのに役立ちます。 :-)

他のヒント

これも機能します:

public static void main(String[] args) {
    Set<String> emptySet = ImmutableSet.of();
    doStuffWith(emptySet);
}

static void doStuffWith(Set<String> strings) {
    // ...
}

タイプの推論は、あなたがに割り当てていることに気付いているため Set<String> 可変であり、タイプパラメーターが必要であることを知っています String.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top