2022/06/23

Salesforceにおける列挙型とは?概要や使い方についても詳しく解説!

 
  

Salesforceにおける列挙型とは?

列挙型とはユーザーが指定した識別子の有限のセットのうち、1つのみを値に持つ抽象データ型を指します。 基本的に番号付けされた順序を持たない値のセットを定義するために使用されます。例えば、特定の季節や一覧表などによく使用されます。 列挙型の各値は整数値に対応していますが、実装は非表示になります。その理由は実装を非表示にすることで演算処理の実行などで、値を間違えることを防げるからです。 ちなみに列挙型を作成後、変数やメソッド引数、返り値をこのデータ型として宣言することもできます。 なお、Javaと異なり、Salesforceの列挙型自体にはコンストラクタ構文がない点に注意が必要です。

列挙型の特徴

列挙型の特徴は以下の3つがあります。 ①複数の列挙子(定数)を1つの型として統一し、管理することができます。 ②1つの列挙子(定数)に複数の表現を定義することができます。 ③列挙子(定数)に共通の処理を定義することができます。

列挙型の定義・使用方法

列挙型を定義するには、宣言でenumキーワードを使用し、値のリストを中カッコで区切る必要があります。 以下のコードは例として「Fruit」という列挙型を作成しています。 (例)
public enum Fruit {     //""class"" ⇒ ""enum"" に書き換える
    //列挙子の定義
    APPLE,
    BANANA,
    GRAPE;
}
このように列挙型Fruitを作成すると””Fruit””という新しいデータ型が作成されます。この新しいデータ型は他のデータ型と同じように使用することが可能です。 また、設定した列挙子(定数)を持つenumを変数として保持し、必要に応じて取得することもできます。 下記の例ではAPPLE、BANANA、GRAPEを定数として入力しました。そのため、抽出する際は他の文字列(APPLE、GRAPE)は出力されません。このように、事前に定義した定数のみを抽出できる点がenumのメリットと言えます。 (例)
public class Basket {
    public static void main(String[] args) {

        Fruit flt = Fruit.BANANA;               //enumを取得
        System.out.println( flt.toString() );   //BANANA
    }
}
さらに、クラスを列挙型として定義することも可能です。 列挙型クラスを作成する場合、定義ではclassキーワードは使用しないように注意しましょう。 (例)
public enum MyEnumClass { A, B }

Apexにおける列挙型について

列挙型は、他のデータ型名を使用できるすべての場所で使用可能です。 しかし、1つ注意点があります。列挙型の変数を定義する場合は、その変数に割り当てるオブジェクトがその列挙型クラスのインスタンスであることが必要です。 またwebserviceメソッドは列挙型を署名の一部として使用できます。この場合、関連付けられたWSDLファイルには列挙型とその値の定義が含まれ、APIクライアントはその定義を使用することが可能です。 WSDLとは、Webサービスを外部のソフトウェアから接続・利用するための仕様(インターフェース)を記述することができる言語のことです。 XML(XML文書の構造を表示や印刷に適した状態に整えたり、見栄えを定義するマークアップ言語)の記法を用いて、Webサービスの持つ機能や外部から利用するためのメッセージの形式や通信手順などを記述する際に使用されます。

APEXにおける列挙型の種類

Apexには、以下の9つの列挙型が存在します。それぞれどのような役割を持っているのでしょうか。ここからはその1つ1つの役割について解説します。

System.StatusCode

この列挙型はすべてのAPI演算子のWSDLドキュメントに公開されるAPIエラーコードに対応できます。 (例)
StatusCode.CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY
StatusCode.INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY
状況コードのリストは、組織のWSDLファイルから入手することが可能です。

System.XmlTag

この列挙型はwebserviceメソッドから返される結果XMLの解析に使用するXMLタグのリストを返すことが可能です。

System.LoggingLevel

この列挙型はsystem.debugメソッドと共に使用することで、あらゆるdebugコールのログレベルを指定することが可能です。

System.RoundingMode

この列挙型は数学的演算を実行して演算の丸め動作を指定するメソッドで使用されます。 例としては、Decimal divideメソッドおよびDouble roundメソッドなどがあります。

System.SoapType

この列挙型はFieldDescribeResultのgetSoapTypeメソッドによって返されます。

System.DisplayType

この列挙型はFieldDescribeResultのgetTypeメソッドによって返されます。

System.JSONToken

この列挙型は、JSONコンテンツの解析に主に使用されます。

ApexPages.Severity

この列挙型はVisualforceメッセージの重要度を指定する際に使用されます。

Dom.XmlNodeType

システム列挙型を含むすべての列挙型の値には、共通メソッドが関連付けられています。ユーザー定義のメソッドは列挙型の値に追加できません

列挙型のメソッド

Apexには組み込み列挙などの独自の列挙型を定義することが可能です。また、ユーザー定義列挙か組み込み列挙かに関わらず、すべてのApex列挙型には引数を取らないという共通メソッドが存在します。 ・values このメソッドは列挙の値を同じ列挙型のリストとして返します。 (例)
List values = StatusCode.values(); 
・name 列挙項目の名前を文字列として返します。 (例)
String s = StatusCode.DELETE_FAILED.name();
・ordinal 0から始まる列挙値の、リスト内の項目位置を整数として返します。列挙値にユーザー定義メソッドを追加することはできません。 (例)
 Integer i = StatusCode.DELETE_FAILED.ordinal();

列挙型は複数の定数をまとめて定義する際に便利!

今回はSalesforceにおける「列挙型」に焦点を当てて解説しました。 列挙型は複数の定数をまとめて定義する際に便利です。列挙型を使用することによりソースコードの可読性を上げられるので、積極的に活用していきましょう。]]>

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

この記事の監修者・著者

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

おすすめの動画

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

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

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