- 「現時点で自分が持っている知識で判断するとこうなる」という個人的見解です
- 間違ってたらごめんなさい
- 将来アップデートされる可能性があります
- この記事では isNull と == を扱っていますが、 nonNull と != についても同様です
高階関数ではない場合
// こっちで書く if (x == null) { // ... } // 読みやすさ・書きやすさの両面で微妙なので避ける // (わざわざこう書くメリットがなさそう) if (Objects.isNull(x)) { // ... }
高階関数の場合
// ラムダ式 fooObj.fooMethod(x -> x == null); // メソッド参照 fooObj.fooMethod(Objects::isNull); // import も必要
これはどっちもありかな、という程度の温度感。
高階関数かそれ以外かで使い分けるのが面倒。全部統一したい場合は?
この使い分けを考えることすら面倒というなら、いっそのこと Objects.isNull
, Objects.nonNull
のことは忘れてしまった方が良いと思います。
メモ
isNull/nonNull のドキュメント
This method exists to be used as a Predicate, filter(Objects::isNull)
- 「このメソッドは Predicate として使われるために存在する」
- 「それ以外の用途には使うべきではない」とは書かれていませんが、暗黙の前提扱いになっていてわざわざ書いてないんじゃないかと推測しています。
SNS で見かけた意見
「わざわざ Objects.isNull 使わなくていいんじゃないかなあ」って思ってるのは私だけじゃないみたいですよ、と言いたいために集めたご意見集。
https://x.com/Maru32768/status/1852210113450487999
https://x.com/irof/status/961275848018964481
https://x.com/irof/status/961276147605504000
https://x.com/hrkt/status/1181334050218266624
https://x.com/dossari_book/status/1722061751779258411