項目トークンの使用
項目のトークンにアクセスするには、次のいずれかのメソッドを使用します。
- 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();Field Describe Result の使用
Field Describe Result にアクセスするには、次のいずれかのメソッドを使用します。
- 項目トークンの getDescribe メソッドをコールします。
- sObject トークンの fields メンバー変数に、項目メンバー変数 (Name、BillingCity など) を使用してアクセスします。
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 メンバー変数は、この方式が使用された場合のみ機能します。
Field Describe Result で使用できるメソッドについての詳細は、「DescribeFieldResult クラス」を参照してください。
sObject のすべての Field Describe Result へのアクセス
Field Describe Result の getMap メソッドを使用して、sObject のすべての項目名 (キー) と項目トークン (値) 間のリレーションを表す対応付けを返します。
次の例では、項目に名前でアクセスするときに使用できる対応付けを生成します。
1Map<String, Schema.SObjectField> fieldMap = Schema.SObjectType.Account.fields.getMap();対応付けには次の特性があります。
- 動的である。つまり、sObject の項目で実行時に生成されます。
- すべての項目名は大文字と小文字を区別しない。
- キーは、必要に応じて名前空間を使用する。
- キーは、項目がカスタムオブジェクトかどうかを反映する。
たとえば、対応付けを生成するコードブロックが名前空間 N1 にあり、項目も N1 にある場合、関連付け内のキーは MyField__c として表されます。ただし、コードブロックが名前空間 N1 にあり、項目が名前空間 N2 にある場合、キーは N2__MyField__c です。
また、標準項目には名前空間プレフィックスがありません。
Field Describe の考慮事項
項目を記述するときに、次の点に注意してください。
- インストールされた管理パッケージ内で Field Describe を実行した場合、インストール先の組織で Chatter が有効になっていなくても、Chatter 項目が返されます。インストールされた管理パッケージ内にないクラスから Field Describe を実行した場合は、Chatter 項目は返されません。
- Apex クラス内から sObject とその項目を記述する場合、クラスが保存されている API バージョンに関係なく、新しいデータ型のカスタム項目が返されます。地理位置情報データ型などのデータ型が最新の API バージョンのみで使用できる場合、クラスが以前のバージョンの API で保存されていても、地理位置情報項目のコンポーネントが返されます。