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

項目トークンの使用

項目のトークンにアクセスするには、次のいずれかのメソッドを使用します。

  • sObject 静的データ型の静的メンバー変数名、たとえば Account.Name にアクセスします。
  • Field Describe Result の getSObjectField メソッドをコールします。

項目トークンは、データ型 Schema.SObjectField を使用します。

次の例では、項目トークンは Account オブジェクトの Description 項目に返されます。

1Schema.SObjectField fieldToken = Account.Description;

次の例では、項目トークンは Field Describe Result から返されます。

1// Get the describe result for the Name field on the Account object
2Schema.DescribeFieldResult dfr = Schema.sObjectType.Account.fields.Name;
3
4// Verify that the field token is the token for the Name field on an Account object
5System.assert(dfr.getSObjectField() == Account.Name);
6
7// Get the describe result from the token
8dfr = dfr.getSObjectField().getDescribe();

項目トークンは、個人取引先では使用できません。Schema.Account.fieldname にアクセスすると、例外エラーが発生します。代わりに、項目名を文字列として指定します。

メモ

Field Describe Result の使用

Field Describe Result にアクセスするには、次のいずれかのメソッドを使用します。

  • 項目トークンの getDescribe メソッドをコールします。
  • sObject トークンの fields メンバー変数に、項目メンバー変数 (NameBillingCity など) を使用してアクセスします。

Field Describe Result は、データ型 Schema.DescribeFieldResult を使用します。

次の例では、getDescribe メソッドを使用します。

1Schema.DescribeFieldResult dfr = Account.Description.getDescribe();

次の例では、次の fields メンバー変数メソッドを使用します。

1Schema.DescribeFieldResult dfr = Schema.SObjectType.Account.fields.Name;

上記の例では、システムは、コンパイル時に最終メンバー変数 (Name) が指定の sObject に対して有効であることを検証する特殊な解析を使用します。パーサーが fields メンバー変数を見つけたら、sObject (Account) の名前を逆方向に検索して、fields メンバー変数の後の項目名が正当であるかどうかを検証します。fields メンバー変数は、この方式が使用された場合にのみ機能します。

項目メンバー変数名または getMap メソッドのいずれかを使用しない場合、fields メンバー変数は使用しないでください。getMap についての詳細は、次のセクションを参照してください。

メモ

Field Describe Result で使用できるメソッドについての詳細は、「DescribeFieldResultClass」を参照してください。

sObject のすべての Field Describe Result へのアクセス

Field Describe Result の getMap メソッドを使用して、sObject のすべての項目名 (キー) と項目トークン (値) 間のリレーションを表す対応付けを返します。

次の例では、項目に名前でアクセスするときに使用できる対応付けを生成します。

1Map<String, Schema.SObjectField> fieldMap = Schema.SObjectType.Account.fields.getMap();

この対応付けの値のデータ型は、Field Describe Result ではありません。Describe Result を使用すると、システムリソースが過剰に使用されます。代わりに、該当する項目の検索に使用できるトークンの対応付けを使用します。項目を決定したら、その項目の Describe Result を生成します。

メモ

対応付けには次の特性があります。

  • 動的���ある。つまり、sObject の項目で実行時に生成されます。
  • すべての項目名は大文字と小文字を区別しない。
  • キーは、必要に応じて名前空間を使用する。
  • キーは、項目がカスタムオブジェクトかどうかを反映する。

Field Describe の考慮事項

項目を記述するときに、次の点に注意してください。

  • インストールされた管理パッケージ内で Field Describe を実行した場合、インストール先の組織で Chatter が有効になっていなくても、Chatter 項目が返されます。インストールされた管理パッケージ内にないクラスから Field Describe を実行した場合は、Chatter 項目は返されません。
  • Apex クラス内から sObject とその項目を記述する場合、クラスが保存されている API バージョンに関係なく、新しいデータ型のカスタム項目が返されます。地理位置情報データ型などのデータ型が最新の API バージョンのみで使用できる場合、クラスが以前のバージョンの API で保存されていても、地理位置情報項目のコンポーネントが返されます。

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

API バージョン 34.0 以降の場合、カスタム SObjectType の Schema.DescribeSObjectResult に含まれる対応付けのキーには、名前空間がプレフィックスとして付加されています。これは、その名前空間が現在実行中のコードの名前空間であっても当てはまります。複数の名前空間を操作し、ランタイム describe データを生成する場合、名前空間プレフィックスを使用してコードで正しくキーにアクセスするようにします。