この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

プリミティブデータ型

Apex は、SOAP API と同じプリミティブデータ型を使用します。ただし、特定の場合に、高精度 Decimal データ型を使用することが異なります。すべてのプリミティブデータ型は、値によって渡されます。

すべての Apex 変数は、クラスのメンバー変数であるかメソッド変数であるかに関係なく、null に初期化されます。変数を使用する前に、必ず適切な値に初期化してください。たとえば、Boolean 変数を false に初期化します。

Apex のプリミティブデータ型は次のとおりです。

データ型 説明
Blob 単一のオブジェクトとして保存されるバイナリデータのコレクション。toString メソッドを使用してこのデータ型を String に変換したり、valueOf メソッドを使用して String をこのデータ型に変換したりできます。Blob は Web サービス引数として受け入れられ、ドキュメントに保存され (ドキュメントの本文は Blob 型)、添付ファイルとして送信されます。詳細は、「Crypto クラス」を参照してください。
Boolean true、false、null のみを割り当てられる値。次に例を示します。
1Boolean isWinner = true;
Date 特定の日を示す値。Datetime 値と異なり、Date 値に時間に関する情報は含まれません。常にシステムの静的メソッドで日付値を作成します。

Date 値に Integer 値を加算または減算して、Date 値を返すことができます。Date 値で機能する演算関数は、Integer 値の加算と減算のみです。2 つ以上の Date 値を含む演算関数は実行できません。代わりに、Date メソッドを使用します。

タイムスタンプが付加されていない日付を取得するには、String.valueOf() メソッドを使用します。Data 値に対して暗黙的な文字列変換を使用すると、��イムスタンプが付加された日付が生成されます。

Datetime タイムスタンプなど、特定の日と時刻を示す値。常にシステムの静的メソッドで日時値を作成します。

Datetime 値に Integer 値または Double 値を加算または減算して、Date 値を返すことができます。Datetime 値で機能する演算関数は、Integer 値および Double 値の加算と減算のみです。2 つ以上の Datetime 値を含む演算関数は実行できません。代わりに、Datetime メソッドを使用します。

Decimal 小数点を含む数値。Decimal は、任意の精度数です。通貨項目には自動的に Decimal 型が割り当てられます。
Decimal に小数点以下の桁数を明示的に設定しない場合、Decimal が作成された項目によって Decimal のスケールが決まります。スケールとは、小数点以下の桁数です。Decimal のスケールは、setScale メソッドを使用して設定します。
  • decimal がクエリの一部として作成される場合、スケールはクエリから返される項目のスケールに基づきます。
  • decimal が string から作成される場合、スケールは string の小数点以下の桁の文字数となります。
  • 小数値が小数以外の数値から作成される場合は、この数値が最初に文字列に変換されます。その後、小数点以下の桁数を使用してスケールが設定されます。

数値的には同等だがスケールが異なる 2 つの Decimal オブジェクトがある場合 (1.1 と 1.10 など)、それらのオブジェクトのハッシュコードは、通常は同じになりません。このような Decimal オブジェクトをセットで使用したり、対応付けキーとして使用したりするときは注意してください。

メモ

Double 小数点を含む 64 ビットの数値。Doubles の最小値は -263、最大値は 263-1 です。次に例を示します。
1Double pi = 3.14159;
2Double e = 2.7182818284D;

Double の科学的記数法 (e) はサポートされていません。

ID 有効な 18 文字の Lightning プラットフォームレコードの識別子。次に例を示します。
1ID id='00300000003T2PGAA0';

ID を 15 文字の値に設定すると、Apex がその値を 18 文字表記に変換します。無効な ID 値は、実行時例外と共に却下されます。

Integer 小数点を含まない 32 ビットの数値。Integer の最小値は -2,147,483,648、最大値は 2,147,483,647 です。次に例を示します。
1Integer i = 1;
Long 小数点を含まない 64 ビットの数値。Long の最小値は -263、最大値は 263-1 です。Integer が提供する範囲よりも広範の値が必要な場合に、このデータ型を使用します。次に例を示します。
1Long l = 2147483648L;
Object

Apex がサポートする任意のデータ型。Apex は、プリミティブデータ型 (Integer など)、ユーザー定義カスタムクラス、sObject 汎用型、または sObject 固有の種別 (取引先など) をサポートします。すべての Apex データ型が Object から継承されます。

基盤となるデータ型に対してより具体的なデータ型を示すオブジェクトをキャストできます。次に例を示します。

1Object obj = 10;
2// Cast the object to an integer.
3Integer i = (Integer)obj;
4System.assertEquals(10, i);

次の例では、組織で事前定義されている MyApexClass という名前のカスタム Apex クラスであるユーザー定義型にオブジェクトをキャストする方法を示します。

1Object obj = new MyApexClass();
2// Cast the object to the MyApexClass custom type.
3MyApexClass mc = (MyApexClass)obj;
4// Access a method on the user-defined class.
5mc.someClassMethod();
String 単一引用符で囲まれた文字のセット。次に例を示します。
1String s = 'The quick brown fox jumped over the lazy dog.';

文字列サイズ: String には、使用できる文字数の制限はありません。ヒープサイズの制限を使用して、Apex プログラムが過度に大きくならないようにします。

空の文字列と末尾の空白文字: sObject の String 項目値は SOAP API と同じ規則に従います。空白は使用できず (null を除く)、先頭および末尾に空白文字を使用できません。データベースの保存はこれらの規則に従います。

これに対し、Apex の String には null または空白を使用できます。また、先頭と末尾に空白文字を使用できます (メッセージを構築する場合に使用できます)。

Solution sObject 項目の SolutionNote は、特別なデータ型 String として処理されます。HTML ソリューションを有効にした場合、この項目で使用される HTML タグは、オブジェクトが作成または更新される前に検証されます。無効な HTML が入力されると、エラーが発生します。この項目で��用される JavaScript は、オブジェクトが作成または更新される前に削除されます。次の例では、Solution が詳細ページに表示される場合、SolutionNote 項目には H1 HTML 書式が適用されます。
1trigger t on Solution (before insert) { 
2            Trigger.new[0].SolutionNote ='<h1>hello</h1>'; 
3}
次の例では、Solution が詳細ページに表示される場合、SolutionNote 項目には「こんにちはさようなら」のみが含まれます。
1trigger t2 on Solution (before insert) {
2            Trigger.new[0].SolutionNote =
3                         '<javascript>Hello</javascript>Goodbye';
4}

詳細は、Salesforce ヘルプの「HTML ソリューションの概要」を参照してください。

エスケープシーケンス: Apex のすべての String は、\b (バックスペース)、\t (タブ)、\n (改行)、\f (フォームフィード)、\r (行頭復帰)、\" (二重引用符)、\' (一重引用符)、\\ (バックスラッシュ) など、SOQL 文字列と同じエスケープシーケンスを使用します。

比較演算子: Java とは異なり、Apex の String では比較演算子 (==、!=、<、<=、>、>=) を使用できます。Apex は SOQL 比較セマンティックを使用するため、String の結果はコンテキストユーザーのロケールに従って照合され、大文字と小文字は区別されません。詳細は、「式の演算子」を参照してください。

String メソッド: Java と同様、String はいくつかの標準メソッドを使用して処理できます。詳細は、「String クラス」を参照してください。

項目に割り当てた文字列値が長すぎる場合、API バージョン 15.0 以降を使用して保存 (コンパイル) した Apex クラスとトリガーにはランタイムエラーが発生します。

Time 特定の時刻を示す値。常にシステムの静的メソッドで時間値を作成します。「Time クラス」を参照してください。

また、次の 2 つの非標準のプリミティブデータ型は変数またはメソッドとして使用できませんが、システムの静的メソッドに表示されます。

  • AnyType。valueOf 静的メソッドは AnyType データ型の sObject 項目を標準のプリミティブデータ型に変換します。AnyType は、Lightning プラットフォームデータベース内で、項目履歴管理テーブルの sObject 項目専用に使用されます。
  • Currency。Currency.newInstance 静的メソッドは Currency データ型のリテラルを作成します。このメソッドは SOQL および SOSL の WHERE 句でのみ使用され、sObject 通貨項目の絞り込みを行います。Currency は Apex のその他のデータ型ではインスタンス化できません。

AnyType データ型についての詳細は、『Salesforce のオブジェクトリファレンス』の「データ型」を参照してください。

バージョン管理動作の変更

API バージョン 16 (Summer ’09) 以降では、Apex は、通貨などの特定の型で高精度 Decimal データ型を使用します。