2022/04/1

Salesforceの機能拡張時に使われるinstanceofとは?使い方などをご紹介

 
  

Salesforceの機能拡張時に使われるinstanceofとは?

Salesforceにおけるinstanceofとは、オブジェクトが実際に特定のクラスのインスタンスであることを確認するときに使われるApex言語のキーワードです。 式の中のinstanceofキーワードの右にある対象の型を、キーワードの左で宣言される型の代替にできるかを調べる場合のみに使用できます。 代替可能な場合にinstanceofはtrueを返し、不可能な場合はfalseを返します。

Salesforceにおけるinstanceofの概要

Boolean result = obj instanceof Account;
上のコードのように、Salesforceにおけるinstanceofは「+」や「-」などの演算子と同じかたちで使われます。下記で使用例や注意点などについて紹介します。

instanceofキーワードの使用例

// 拡張元のクラス
public class Parent{
}
// 拡張するクラス
public class Child extends Parent{
}

Parent p = new Child();
If (p instanceof Child) {
    Child c = (Child) p;
} else {
    // Childがpの型に代替できない場合はキャストしない
}
上記のコードでは、拡張元の型の変数pに拡張したクラスのオブジェクトを代入します。そして、型Childをpの型に代替できるかをinstanceofで調べます。このコードでは代替可能なので、pのオブジェクトはChildにキャストされcに代入されます。 instanceofでキャスト可能かを調べるため、より安全なコードになります。

instanceofキーワードの注意点

SalesforceにおいてAPIバージョン32.0以降で保存されたApexでは、instanceofの左のオペランドがnullの場合、instanceofはfalseを返します。下のコードでは、falseを返します。
Object obj = null;
Boolean result = n instanceof Account;
if (result) {
    System.debug('true');
} else {
    System.debug('false');
}
APIバージョン31.0以前では、この場合instanceofはtrueを返します。

instanceofの優先順位

Apexでは、演算子は規則に従った順序で解釈されます。優先順位は次のとおりです。1が一番優先順位が高く、9が低くなっています。 1.{} () ++ == 2.! -x +x (type) new 3.* / 4.+ – 5.< <= > >= instanceof 6. == != 7.&& 8.|| 9.= += -= *= /= &= もし優先順位がわからなくなった場合は、優先してほしい演算子に「()」のグループ化などを使うことで優先できます。

instanceofを使いこなそう!

本記事では、Salesforceの機能拡張時に使われるinstanceofについて紹介しました。 instanceofを使うことで、オブジェクトが特定のクラスのインスタンスであるかを確認でき、より安全なコードを書くことが可能になります。機能拡張時に使えるように、是非おぼえておきましょう。]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】