ImmutableSet を使用するためのよりクリーンなソリューションが必要です。次のようなコードがあります
Set foo = ImmutableSet.copyOf(aGeoR.getFailed());
aGeoR.getFailed() が 1 つ以上のエントリを返す場合にうまく機能します。
返されたセットが null の場合は失敗します。
null の場合、
Set foo = ImmutableSet.of();
これを行うためのクリーンな方法は何ですか?
これは 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);
Set foo = aGeoR.getFailed();
foo = foo == null ? new HashSet() : ImmutableSet.copyOf(foo);