26

JDKまたはGoogle Guavaにこのような方法はありますか

public static <T> Collection<T> safe(Collection<T> collection) {
    if (collection == null) {
        return new ArrayList<>(0);
    } else {
        return collection;
    }
}

これにより、たとえば何かが null リストを返す場合に、強化されたループで簡単にクラッシュしなくなります。

for (String string : CollectionUtils.safe(foo.canReturnANullListOfStrings())) {
    // do something
}

クラッシュしません。

調べてみましたが、そのような方法は見つかりませんでした。見落としたのでしょうか、それとも、このような便利な方法が便利ではないために含まれていない理由があるのでしょうか?

4

5 に答える 5

28
Objects.firstNonNull(list, ImmutableList.<Foo>of());

特殊なメソッドは必要ありません。これ、理想的にはそもそもそれを行うべきではないいたずらな API から null の可能性があるコレクションを取得するたびに、すぐに使用することをお勧めするソリューションです。

于 2013-02-15T21:31:13.560 に答える
18

Java 8 では、これを使用できます。

Optional.ofNullable(foo.canReturnANullListOfStrings()).orElse(Collections.emptyList());
于 2016-12-09T13:52:32.697 に答える
1

ですから、この種の私の知識には機能がありません。ただし、上に示したように、1つ書くのは簡単です。含まれていなかった理由は、特定の意味があり、渡されたときにnull空を返すのは適切でない可能性があるためです。Collection一般に(私の経験では)null値がシステムに入ると、チェーンの上位で何かが失敗したか、無効な値が適切にサニタイズされませんでした。

于 2013-02-15T21:27:29.597 に答える