Listのnull判定やempty判定について開発中に気になったので軽くまとめてみました。
というのもコードレビューをしていると、人によって、
- if(strList == null)
- if(strList.size() == 0)
- if(strList.isEmpty())
の使い方がばらばらだったりするわけです。
どのような時にどれを使用すればよいのか問題ですね。
Listがnullのとき
まず、Listがnullの時の判定ですが、
if(strList == null)
を使用します。
以下のコードでは「strList」はインスタンス化されておらずnullの状態(入れ物がない状態)です。
判定に「size()」や「isEmpty()」を使用するとNullPointerExceptionとなってしまいます。
List<String> strList;
if(strList == null){
system.debug('nullです');
}
[5]|DEBUG|nullです
Listのサイズが0、もしくは空のとき
次にリストの要素の数が0件の場合や、空の場合の判定です。
以下のコードでは、strListはインスタンス化されているのでnullではなく「空」となります。
この場合、
「size() == 0」もしくは「isEmpty()」
を使用します。
List<String> strList = new List<String>();
if(strList == null){
system.debug('nullです');
}
if(strList.size() == 0){
system.debug('0です');
}
if(strList.isEmpty()){
system.debug('Emptyです');
}
[8]|DEBUG|0です
[12]|DEBUG|Emptyです
「size() == 0」と「isEmpty()」、どちらを使用しても結果的には同じですが、要素のサイズを重視しない場面であれば、「isEmpty()」を優先的に使用するのがよさそうですね。

まとめ
「size() == 0」と「isEmpty()」ですが、基本的には「isEmpty()」を使用する、で問題なさそうですね。
Listの中身があるかどうかの判定なのでTrue、Falseで返す「isEmpty()」の方が理にかなっている気もします。
また、これらの2つはListがnullでないことが前提です。
必要に応じてNullチェックを行うなどしてNullPointerExceptionを回避していきましょう、ってことですね。
今回は以上です。
コメント