2009-03-04 11 views
10

私は4つの変数を持っており、そのうちの1つがnullかどうかをチェックしたいと思います。私はJavaまたはApache Commonsにvarargs nullチェック機能はありますか?

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

はなく、私が本当にしたいことは

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

で行うことができますが、私はそれを自分自身を記述する必要はありません。この関数は、一般的なJavaライブラリに存在しますか?私はCommons Langをチェックし、それを見ませんでした。任意の数の引数を取るには、varargsを使用する必要があります。

答えて

10

あなたはJavaライブラリでできる最善のは、私が思うに、次のとおりです。

if (asList(a, b, c, d).contains(null)) { 
+1

java.util.Arrays.asListを静的にインポートすると、私は推測しますか? –

+0

はい。あなたはそれをどこかにインポートしなければなりません。 ... –

+0

文法に近いプログラミング – OscarRyz

18

それはコモンズでいた場合、私は知りませんが、それは書くのに約10秒かかります:

public static boolean anyNull(Object... objs) { 
    for (Object obj : objs) 
     if (obj == null) 
      return true; 
    return false; 
} 
+0

ええ、私は知っているが、問題はどこですそれを置く。 ;) –

+1

あなたはある種のユーティリティクラスを持っていますか?私はいつも1で終わるようです。 –

+0

ええ、コモンズラング、コモンズIO、コモンズコレクションなど... –

4

あなたはSUC、静的なヘルパーを置くために、私は

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

を示唆して、呼び出しのために修飾名を使用するコメントで尋ねました

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

同じような時間は、クラスAnyisNull等の方法で行うことができます。

+0

私はその考えがとても好きです。 –

1

あなたも、よりエレガントな方法でそれを行うことができます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)) { ... } 
関連する問題