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

プリミティブデータ型

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

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

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

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

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

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

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

Decimal 小数点を含む数値。Decimal は、任意の精度数です。通貨項目には自動的に Decimal 型が割り当てられます。

メモ

Decimal に小数点以下の桁数を明示的に設定しない場合、Decimal が作成された項目によって Decimal のスケールが決まります。スケールとは、小数点以下の桁数です。Decimal のスケールは、setScale メソッドを使用して設定します。
  • decimal がクエリの一部として作成される場合、スケールはクエリから返される項目のスケールに基づきます。
  • decimal が string から作成される場合、スケールは string の小数点以下の桁の文字数となります。
  • 小数値が小数以外の数値から作成される場合は、この数値が最初に文字列に変換されます。その後、小数点以下の桁数を使用してスケールが設定されます。
Double 小数点を含む 64 ビットの数値。Doubles の最小値は -263、最大値は 263-1 です。次に例を示します。
1Double d=3.14159;

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 ビットの数値。Longs の最小値は -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 データ型を使用します。