10

4 つの変数があり、それらのいずれかが null かどうかを確認したいと考えています。できます

if (null == a || null == b || null == c || null == d) {
    ...
}

しかし、私が本当に欲しいのは

if (anyNull(a, b, c, d)) {
    ...
}

しかし、私はそれを自分で書きたくありません。この関数は一般的な Java ライブラリに存在しますか? Commons Lang を確認しましたが、表示されませんでした。任意の数の引数を取るには、varargs を使用する必要があります。

4

4 に答える 4

19

それがコモンズにあるかどうかはわかりませんが、書くのに約10秒かかります:

public static boolean anyNull(Object... objs) {
    for (Object obj : objs)
        if (obj == null)
            return true;
    return false;
}
于 2009-03-04T21:30:28.730 に答える
10

Java ライブラリでできる最善のことは、次のことだと思います。

if (asList(a, b, c, d).contains(null)) {
于 2009-03-04T21:32:59.850 に答える
4

あなたはコメントで静的ヘルパーをどこに置くべきか尋ねました、私は提案します

public class All {
    public static final boolean notNull(Object... all) { ... }
}

次に、次のように呼び出しに修飾名を使用します。

assert All.notNull(a, b, c, d);

Anyのようなクラスとメソッドでも同じことができますisNull

于 2009-03-07T23:55:37.423 に答える
2

Java 8 では、さらにエレガントな方法でそれを行うことができます。

if (Stream.of(a, b, c, d).anyMatch(Objects::isNull)) { ... }

または、メソッドに抽出できます。

public static boolean anyNull(Object... objects) {
    return Stream.of(objects).anyMatch(Objects::isNull);
}

そして、次のようにコードで使用します。

if (anyNull(a, b, c, d)) { ... }
于 2016-09-14T12:11:46.713 に答える