SalesforceにおけるWebサービスコールアウトのテスト完全ガイド

Apex におけるリストの空チェック方法: isEmpty, size, != null の違い


Salesforce における List の空チェック方法の比較: isEmpty(), size() > 0, != null

Apex ではリストや配列を操作する際、リストが「空かどうか」を確認することが非常に一般的です。そのために利用できる 3 つの方法の違いと推奨される使い方を以下で解説します。


1. isEmpty() メソッド

概要:

isEmpty() メソッドはリストが「空」であるかを直接確認するためのメソッドです。リストが要素を持たない場合は true を返します。

サンプルコード:

List<String> myList = new List<String>();
System.debug(myList.isEmpty()); // true

特徴:

  • myList.isEmpty()リストが null の場合にエラー になるため、リストが null の可能性がある場合は事前に null チェックが必要です。
  • コードが直感的かつ読みやすい。

2. size() > 0

概要:

size() メソッドを使用してリストの要素数を取得し、それが 0 より大きいかどうかでリストが空かどうかを判断します。

サンプルコード:

List<String> myList = new List<String>();
System.debug(myList.size() > 0); // false

特徴:

  • size() はリストが null の場合にエラーになるため、null チェックが必要。
  • パフォーマンス的には isEmpty() と同等だが、記述が冗長になる。

3. != null

概要:

リストが null でないことを確認する方法。リストが「空」(要素が 0 個)でも null ではない場合は true を返します。

サンプルコード:

List<String> myList = null;
System.debug(myList != null); // false

特徴:

  • リストが「空」かどうかではなく、「存在するか」を確認するための方法。
  • リストが空である場合も true を返す ため、要素があるかどうかのチェックとしては不適切。

4. 各メソッドの比較

方法 空リスト ([]) の場合 null の場合 説明
isEmpty() true エラー 空チェック専用、リストが存在している場合に使用。
size() > 0 false エラー リストが存在し、要素があるかどうかを確認可能。
!= null true false リストの存在チェック用、空チェックには不適。

5. 推奨される書き方

リストが null または空でないことを確認する場合:

if (myList != null && !myList.isEmpty()) {
    // リストにデータが存在
}

リストが null または空であることを確認する場合:

if (myList == null || myList.isEmpty()) {
    // リストが存在しないか、空
}

リストの存在チェックだけ必要な場合:

if (myList != null) {
    // リストが存在している
}

6. その他の注意点

  1. 初期化されたリスト

    • 新規作成されたリスト (new List()) は空であり、null ではありません。
    • 初期化されていないリストは null の可能性があります。
  2. isEmpty()size() の違い

    • コードの可読性の観点から、空チェックには isEmpty() の使用が推奨されます。
  3. パフォーマンス

    • 実行時のパフォーマンス差はほとんどありませんが、isEmpty() の方が意図が明確になります。

コメント