LoginSignup
4
1

More than 3 years have passed since last update.

【Apex】ナビゲーション演算子によるNullPointerException回避

Posted at
1 / 2

今回はSalesforceのWinter21でリリースされるナビゲーション演算子についての簡単に使い方をまとめました。

ナビゲーション演算子とは

Winter21でリリースされた機能として、ナビゲーション演算子がリリースされました。

ナビゲーション演算子はNull条件演算子などと称されることもあり、C#やRubyなどを使用している方はお馴染みかもしれませんが、それがApexでも実現できるようになりました。

ナビゲーション演算子はポインタ型の変数に対して、Nullでなければ第二項の結果を返し、NullであればそのままNullを返す演算子となります。
これにより、今まで気を使っていたポインタ変数に対してのNullチェックをナビゲーション演算子を使うことによって1文で記述することが可能になります。

使い方

ナビゲーション演算子は『?.』という形で記述します。
ナビゲーション演算子は使い方を簡単に例にしてみました。

例)Accountの変数accに対して、NameをaccName(String)にセットする場合

今まではこのように、オブジェクト変数のNullチェックが必要でした。
(Nullチェックをせずに直接Nameを参照しようとすると、NullPointerException)

Account acc = null;
String accName = null;
// Accountに対するNullチェックが必要だった
if(acc != null){
    accName = acc.Name;
}

ナビゲーション演算子によって、以下のように1文で取得することが可能になります。

Account acc = null;
// ナビゲーション演算子を使うと1文で記述することが可能
String accName = acc?.Name;

実際にデバッグで調べてみましょう。
以下のコードをOpen Execute Anonymous Windowで実行してみます。

// AccountをNullにしてName取得
Account acc = null;
System.debug('Account Name is ' + acc?.Name);

// Accountに値を設定してName取得
acc = new Account(Name = 'test');
System.debug('Account Name is ' + acc?.Name);

結果はこのようになりました。
スクリーンショット 2020-11-22 21.46.14.png

このようにAccountがNullであってもNullPointerExceptionが起きることなく、結果をNullで返してくれるということが分かりました。

今回はオブジェクト変数での検証となりましたが、List型や配列などでも使用可能ですので、今後はNullPointerExceptionを恐れることなくバンバン使っていきましょう!

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1