これで解決!Javaでnull判定する方法を紹介
  • facebookページ
  • twitterページ
  • 2021.01.22

    これで解決!Javaでnull判定する方法を紹介

    nullは、変数の値に何も定義されていない(何も入っていない)状態を表す特殊は値で、 nullが格納された変数に対しメソッド呼び出しを行うと、 NullPointerExceptionが発生します。

    NullPointerExceptionは、アプリのよくあるバグの原因として挙げられほどで、 nullが入る可能性がある変数には必ず null判定を行う必要があります。

    この記事では、Javaで null判定を行う方法や、 Optionalクラスを使った新しい null判定の方法などを解説します。

    nullを判定する

    null判定する方法は、Javaでは比較演算子で判定する方法や、 StringUtils.isEmptyを使う方法など、いくつかの方法が用意されています。

    それぞれの null判定を見ていきましょう。

    比較演算子を使ってnull判定

    数値などの比較でも使用する、比較演算子の ==!=を使って null判定をします。

    StringUtils.isEmptyでnull判定

    isEmptyは、引数で渡された文字列が nullか空文字(“”)の場合に trueを返すメソッドです。引数の方が文字列であるため、文字以外の変数型ではこのメソッドは使用できません。

    ポテパンダの一言メモ

    StringUtilsはJavaの標準APIではないため、 Apache Commons Langのライブラリを導入する必要があります。

    Objects.isNull・nonNullで判定

    Objectsクラスは Java 7で追加され、 isNullnonNullは Java 8で新たに追加されたメソッドです。引数で渡された値が nullの場合に trueを返します。

    isNullnonNullの引数は Object型であるため、どのような型の変数でも null判定が行えます。

    ポテパンダの一言メモ

    Objectsクラスを使用する場合は、インポートに import java.util.Objects;を追加することも忘れずに。

    Objects.requireNonNullで判定

    requireNonNullメソッドは、引数で指定した値が nullでないことをチェックします。
    もし引数の値が nullだった場合、 requireNonNullメソッドは NullPointerExceptionをスローします。

    2番目の引数を指定すると、 NullPointerException発生時のメッセージをカスタマイズできます。

    次の結果のように、 requireNonNullメソッドの第2引数に指定した文字列が NullPointerExceptionのメッセージに設定されていることが分かります。

    Optionalを使った新しいnull判定

    Java 8で java.util.Optionalクラスが追加され、 nullの新しい扱い方ができるようになりました。

    java.util.Optionalは、 nullの可能性がある変数を取り扱うために用意されたクラスでで、シンプルな構文で nullを含む変数などのメソッドを安全に呼び出せることが特徴です。

    実際に、 java.util.Optionalクラスを使って、 null判定を行うサンプルコードを確認していきましょう。

    Optionalの宣言

    Optionalクラスの生成は、次のいずれかのインスタンス生成用の staticメソッド使います。

    isPresent()メソッドでNull判定

    前述した方法で生成した Optionalオブジェクトが保持する値が null以外の場合 truenullの場合 falseを返すメソッドです。

    orElse/orElseGetで安全に値を取得

    orElseおよび orElseGetメソッドは、 Optionalオブジェクトの値が nullだった場合に、引数で指定した代替の値を返すメソッドです。

    nullの場合にデフォルト値を返すなどの用途に使用でき、 NullPointerExceptionによるバグを防ぐ役割が期待できます。

    まず、 orElseメソッドの使い方をみてみましょう。値が nullだった場合の戻り値を引数で指定します。

    次に orElseGetメソッドの使い方です。
    こちらのメソッドは、値が nullだった場合に戻り値を返す処理をラムダ式で記述します。

    ifPresentでnulli以外の時だけメソッドを実行

    ifPresentは、値が null以外の場合のみ、引数で指定したラムダ式が実行されます。

    さいごに

    Javaで nullを判定する方法や、 Optionalクラスの使い方について解説してきました。

    nullを正しく理解し、 NullPointerExceptionなどのエラーが発生しないプログラムを作成しましょう。

    【関連記事】
    【Java】nullチェック忘れを未然に防ぐOptionalクラスについてわかりやすく解説します。



    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE