Code Stack

java.util.Objectsを使う

更新日 2025年3月23日

このページでは、java.util.Objects クラスの使用例を記載しています。
Java 7から追加されたクラスで、等価判定、Nullチェックなどを行うためのメソッドが提供されています。


なぜObjectsクラスを使うのか?


Nullチェックのメソッドを例にして、違いを確認してみます。
Objectsクラスを使うことでコードから記号が減り、自然な文章として読みやすくなります。


通常のNullチェック

              String str = null;

    // Nullではない場合
    if (str != null) {
      // 処理
    }
    // Nullの場合
    if (str == null) {
      // 処理
    }

        

Objectsクラスを使用した場合

              String str = null;

    // Nullではない場合
    if (Objects.nonNull(str)) {
      // 処理
    }
    // Nullの場合
    if (Objects.isNull(str)) {
      // 処理
    }

        

いかがでしょうか?
Javaの文法に沿って記述する場合は、記号から意味を読み替える必要がありますが、
Objectsクラスを使用することで、英語から意味を読み取ることができます。
好みはあるかもしれませんが、こういった書き方が直感的としてモダンな書き方になっています。
また、単純な記述ミスを防ぐという意味でも推奨されるので可能な限り使っていくと良いでしょう。

他にも様々なメソッドが用意されているので、以下に使用例を記載していきます。



Nullチェック処理



isNull

引数の値がNullの場合はtrueを返します。

              if (Objects.isNull(str)) {
      // 処理
    }

        

nonNull

引数の値がNullではない場合はtrueを返します。

              if (Objects.isNull(str)) {
      // 処理
    }

        

requireNonNull

引数の値がNullの場合、NullPointerExceptionが発生します。

              Objects.requireNonNull(str);
    // 引数がNullの場合NullPointerExceptionがthrowされる

    Objects.requireNonNull(str, "引数がNullです");
    // 引数がNullの場合第2引数のメッセージでNullPointerExceptionがthrowされる

    // ラムダ式のSupplierを使用することも可能
    Supplier supplier = () -> "引数の値がnullです";
		Objects.requireNonNull(str, supplier);
    // 引数がNullの場合Supplierのgetメソッドの戻り値でNullPointerExceptionがthrowされる

        

requireNonNullElse

引数の値がNullの場合、第2引数の値が返されます。

              String result = Objects.requireNonNullElse(str, obj);
    // 引数がNullの場合第2引数の値が返される

        

requireNonNullElseGet

引数の値がNullの場合、Supplierのgetメソッドの戻り値が返されます。

              String result = Objects.requireNonNullElseGet(str, () -> "第1引数がNullの場合の文字列");
    // 引数がNullの場合Supplierのgetメソッドの戻り値が返される

        

toString

引数の値がNullの場合を考慮したtoStringメソッドで文字列変換されます。

              Integer obj = null;
    String result = Objects.toString(obj);
    // 引数がNullの場合"null"が返される

    String result = Objects.toString(obj, "第1引数がNullの場合の文字列");
    // 引数がNullの場合第2引数の値が返される