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からぱっと見分かりやすいことも効果としてありそうですね。