前回投稿した記事で、NullPointerExceptionについて整理しました。
(https://qiita.com/saionji-kimochi/private/bdc1671568139352ff84)
↑の記事のまとめで、仕様上nullになる可能性がある場合はnullポチェックを行ってエラー落ちを回避する必要があると書きました。
今回はそのお話です。
やり方
一般的なやり方は、「if文で参照元がnullでなければ参照を行わない」という条件を加えることだと思います。というか、それ以外知りません。あれば教えてください。
以下具体例です。
int sample = null;
if(sample != null){
System.out.printLn(sample * 3);
}
このように、中身がnullではない時にのみそれを参照するようにすればnullポで落ちることを回避できます。
また、String型は上記の方法に加えて、isEmpty()メソッドも使うことが出来ます。
String sample = null;
if(sample.isEmpty()){
// 以下略
isEmpty()は、対象の文字列がnullもしくは空文字の場合にtrueを返します。
なので、空文字は許容したいなどの場合にはこれは使用できません。
続いて、オブジェクトをチェックする場合です。
Object obj = null;
if(!Objects.isNull(obj)){
// 以下略
もしくは
Object obj = null;
if(Objects.nonNull(obj)){
// 以下略
このように、ObjectsクラスをのisNullメソッドやnonNullメソッドを使用することで実装できます。
ただし、バージョンの注意は必要みたいです。
まとめ
今回はnullポ落ちを回避するための、チェックのやり方を纏めました。現在の案件では、Objects.nonNull()を使用することが多いです。
様々な状況に応じて使い分けられるようになればいいですね。