Java Tips | 基本ユーティリティ:Objects.isNull()

Web APP Java
スポンサーリンク
スポンサーリンク

Objects.isNull()とは何か

Javaの業務開発において、最も頻繁に行う処理のひとつが「nullチェック」です。

nullとは、オブジェクトの参照先が存在しない状態を表します。

例えば、データベースから取得した顧客情報が存在しなかった場合や、外部APIから期待したデータが返ってこなかった場合などにnullが発生します。

Javaでは、nullを適切に扱わないと「NullPointerException」という例外が発生し、システム障害の原因となることがあります。

そのような問題を防ぐために利用されるユーティリティメソッドのひとつが Objects.isNull() です。

Objects.isNull(対象オブジェクト)
Java

このメソッドは、

  • nullの場合 → true
  • nullではない場合 → false

を返します。


Objects.isNull()の基本構文

まずは最もシンプルな例を見てみましょう。

import java.util.Objects;

String name = null;

if (Objects.isNull(name)) {
    System.out.println("nameはnullです");
}
Java

実行結果

nameはnullです

nameがnullなので、Objects.isNull()trueを返しています。


従来のnullチェックとの違い

Javaでは古くから次のような書き方が行われてきました。

String name = null;

if (name == null) {
    System.out.println("nameはnullです");
}
Java

実は、

Objects.isNull(name)
Java

は、

name == null
``
Java

とほぼ同じ意味です。

内部的にも非常に単純な実装になっています。

public static boolean isNull(Object obj) {
    return obj == null;
}
``
Java

つまり性能面で大きな差はありません。


ステップバイステップで理解する

ステップ1:変数を作成する

String userName = null;
Java

まだ何も参照していない状態です。


ステップ2:isNull()で判定する

boolean result =
        Objects.isNull(userName);
`
Java

`


ステップ3:判定結果を確認する

System.out.println(result);
Java

実行結果

true

userNameはnullなのでtrueになります。


nullでない場合はどうなるのか

String userName = "MONO";

System.out.println(
        Objects.isNull(userName));
Java

実行結果

false

値が存在しているため、falseが返ります。


なぜnullチェックが重要なのか

業務システムではユーザー情報や商品情報などの取得処理が頻繁に行われます。

例えば次のコードを見てください。

User user = userService.findById(100);
Java

検索対象が存在しない場合、

user == null
Java

になる可能性があります。

その状態で次のコードを実行すると問題が発生します。

System.out.println(user.getName());
Java

実行結果

NullPointerException

つまり、

「存在しないオブジェクトのメソッドを呼び出した」

ために例外が発生したのです。


実務では取得直後にチェックする

実務では次のような書き方が基本になります。

User user = userService.findById(100);

if (Objects.isNull(user)) {
    System.out.println("ユーザーが存在しません");
    return;
}

System.out.println(user.getName());
Java

この書き方により、

  • システム障害を防げる
  • コードの意図が明確になる
  • デバッグしやすくなる

というメリットがあります。


特に重要:NullPointerExceptionを防ぐ考え方

初心者が最初に遭遇しやすいエラーがNullPointerExceptionです。

例えば次のコードです。

String text = null;

System.out.println(text.length());
Java

実行結果

NullPointerException

文字列が存在しないのに長さを取得しようとしているためです。

そこで事前にチェックします。

String text = null;

if (!Objects.isNull(text)) {
    System.out.println(text.length());
}
``
Java

この考え方は業務システム開発の基本中の基本です。


Objects.isNull()が活躍する場面

コレクション処理

Java8以降ではStream APIがよく利用されます。

例えばリストの中からnullだけを取得したい場合です。

List<String> list =
        Arrays.asList(
                "A",
                null,
                "B",
                null,
                "C"
        );

list.stream()
    .filter(Objects::isNull)
    .forEach(System.out::println);
Java

このコードはnullだけを抽出します。


メソッド参照との相性が良い

従来の書き方

list.stream()
    .filter(x -> x == null);
Java

Objects.isNull()版

list.stream()
    .filter(Objects::isNull);
Java

後者のほうが、

「nullを判定している」

という意図が明確に伝わります。

そのためJava8以降のモダンなコードでは頻繁に見かけます。


Objects.nonNull()も一緒に覚えよう

実務ではこちらの方が登場回数が多い場合があります。

Objects.nonNull()
Java

これは、

  • nullではない → true
  • null → false

を返します。

例えばnullを除外したい場合です。

list.stream()
    .filter(Objects::nonNull)
    .forEach(System.out::println);
Java

実行結果

A
B
C

非常に読みやすいコードになります。


実務で使えるテンプレート集

データ取得後チェック

Employee employee =
        employeeRepository.findById(id);

if (Objects.isNull(employee)) {
    throw new RuntimeException(
            "社員情報が存在しません");
}
Java

リクエストチェック

if (Objects.isNull(request)) {
    throw new IllegalArgumentException(
            "リクエストが不正です");
}
Java

ログ出力前チェック

if (Objects.nonNull(user)) {
    log.info(user.getName());
}
Java

Streamでnull除外

List<String> result =
        list.stream()
            .filter(Objects::nonNull)
            .toList();
Java

初心者が間違えやすいポイント

nullと空文字は別物

初心者が特に勘違いしやすい部分です。

String str = "";
Java

これはnullではありません。

そのため、

Objects.isNull(str)
Java

の結果は、

false

になります。


空文字チェックは別で行う

if (str == null || str.isEmpty()) {
    System.out.println("未入力");
}
Java

実務では、

  • null
  • 空文字
  • 空白のみ

を区別するケースが非常に多いため注意が必要です。


isNull()を使えば安全になるわけではない

次のコードは正しくありません。

if (Objects.isNull(user)) {
    System.out.println("nullです");
}

user.getName();
Java

nullだった場合でも処理が続行されます。

正しくは次のようにします。

if (Objects.isNull(user)) {
    return;
}

user.getName();
Java

チェックした後の処理設計まで含めて考えることが重要です。


情報セキュリティの観点から見る重要性

nullチェック不足は単なるプログラムミスではありません。

本番環境では次のような問題につながる可能性があります。

  • サービス停止
  • 業務処理の中断
  • データ不整合
  • 例外ログの大量出力
  • システム可用性の低下

セキュアコーディングでは、

「外部から受け取る値は信用しない」

という原則があります。

そのため、

Objects.isNull()
Java

による入力値検証や取得結果の確認は、堅牢なシステムを作るための第一歩といえます。


実務での使い分け

一般的には次のように使い分けられます。

通常のif文

if (user == null) {
}
Java

シンプルで読みやすいです。


Stream API

.filter(Objects::isNull)
`
Java

こちらが圧倒的に読みやすいです。


null除外

.filter(Objects::nonNull)
Java

実務で非常によく利用されます。


まとめ

Objects.isNull()はJava標準ライブラリが提供するnull判定ユーティリティです。

主なポイントは次の通りです。

  • nullならtrueを返す
  • == null とほぼ同じ意味
  • NullPointerExceptionの予防に役立つ
  • Stream APIとの相性が非常に良い
  • メソッド参照でコードが読みやすくなる
  • Objects.nonNull()とセットで覚えると実務で便利
  • セキュアコーディングや障害防止の観点でも重要

特に初心者のうちは、「オブジェクトを取得したらまずnullを疑う」という意識を持つことが重要です。この習慣を身につけるだけで、実務レベルのJavaコードの品質と安全性が大きく向上します。

タイトルとURLをコピーしました