4

ImmutableSet を使用するためのよりクリーンなソリューションが必要です。次のようなコードがあります

Set foo = ImmutableSet.copyOf(aGeoR.getFailed());

aGeoR.getFailed() が 1 つ以上のエントリを返す場合にうまく機能します。

返されたセットが null の場合は失敗します。

null の場合、

Set foo = ImmutableSet.of();

これを行うためのクリーンな方法は何ですか?

4

2 に答える 2

17

これは Guava と に関する質問として表現されていImmutableSetますが、ここでの本当の問題は ですaGeoR.getFailed()。コレクションを返すメソッドが null を返すことは、基本的に適切ではありません。最初は空のセットを返す必要があります (Effective Java を参照)。ええ、そうではないという事実は、ユーザーにいくらかの苦痛を与えるでしょう.

そのようなAPIに対処する必要があり、それを修正したり修正したりできない場合は、@Jhericoの回答のリビジョンで示したとおりに行います。

Set<FailedGeoR> failedOrNull = aGeoR.getFailed();
Set<FailedGeoR> failed = (failedOrNull == null)
    ? ImmutableSet.<FailedGeoR>of()
    : ImmutableSet.copyOf(failedOrNull);
于 2010-01-08T05:40:59.093 に答える
2
Set foo = aGeoR.getFailed();
foo = foo == null ? new HashSet() : ImmutableSet.copyOf(foo);
于 2010-01-08T02:04:13.377 に答える