この記事の目次
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エンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞
最新の投稿
- 2024年3月26日キャリア・転職保安職(自衛官・警察・消防官など)に向いている人の性格・特徴ランキング【現役保安職(自衛官・警察・消防官など)36人が回答】
- 2024年3月26日キャリア・転職保安職(自衛官・警察・消防官など)に必要なスキルランキング&スキルアップの方法とは?【現役保安職(自衛官・警察・消防官など)36人が回答】
- 2024年3月26日キャリア・転職クリエイター職(ライター・デザイナー・編集)に向いている人の性格・特徴ランキング【現役クリエイター職(ライター・デザイナー・編集)64人が回答】
- 2024年3月26日キャリア・転職クリエイター職(ライター・デザイナー・編集)に必要なスキルランキング&スキルアップの方法とは?【現役クリエイター職(ライター・デザイナー・編集)64人が回答】