Nullチェック

JavaのNullチェック

Nullチェックをする際、変数==nullで書いてもチェックすることはできますが、JavaではNull判定を行うメソッドが用意されています。

Objects.isNull()

null判定の結果、nullならtrueを返してくれます。

String nullCheck = null;
System.out.println(Objects.isNull(nullCheck));
 true

Integer型のチェックもできます。
Int型はnullを扱えませんが。

Integer nullCheck = null;
System.out.println(Objects.isNull(nullCheck));
 true

Listももちろん。

List<String> nullCheck = null;
System.out.println(Objects.isNull(nullCheck));
 true

Objects.nonNull

こちらはnullならfalseが帰ってきます。

String nullCheck = null;
System.out.println(Objects.nonNull(nullCheck));
 true

効果

ドキュメントにこんな記載がありました。

このメソッドは、Predicate(filter(Objects::isNull))として使用するために存在します。

Streamとかで、null判定をする時に使えるのかな。

List<Integer> data = Arrays.asList(0,1,2,3,null,4,5);//リストを宣言
List<Integer> stream_data = data.stream() //生成
        .filter(Objects::nonNull) //nullチェック
        .map(value->value*2) //中間処理
        .toList(); // 終端処理
System.out.println(stream_data);//[0, 2, 4, 6, 8, 10]

かなり無理やりな例だけど…途中でNullチェックを入れないとエラーがでますね。nonNull()のおかげでfilterができました。

List<Integer> data = Arrays.asList(0,1,2,3,null,4,5);//リストを宣言
Integer stream_data = Objects.isNull(data) ? 0 : data.stream() //生成
        .filter(Objects::nonNull)
        .map(value->value*2)
        .mapToInt(value -> value).sum();
System.out.println(stream_data);//30

最初にList自体のNullチェックをして、Trueなら0、falseならNull以外を合計してみました。
こういった使い方ができる他にも、isNullかnonNullからぱっと見分かりやすいことも効果としてありそうですね。