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. その他の注意点
-
初期化されたリスト
- 新規作成されたリスト (
new List) は空であり、() nullではありません。 - 初期化されていないリストは
nullの可能性があります。
- 新規作成されたリスト (
-
isEmpty()とsize()の違い- コードの可読性の観点から、空チェックには
isEmpty()の使用が推奨されます。
- コードの可読性の観点から、空チェックには
-
パフォーマンス
- 実行時のパフォーマンス差はほとんどありませんが、
isEmpty()の方が意図が明確になります。
- 実行時のパフォーマンス差はほとんどありませんが、

コメント
コメントを投稿