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

Apex Describe Information について

トークンまたは describeSObjects Schema メソッドを使用して sObject を記述できます。

Apex は、sObject と項目の Describe Information に関する次の 2 つのデータ構造と 1 つのメソッドを提供します。

  • トークン — 軽量で逐次化可能な sObject への参照、またはコンパイル時に検証される項目。トークン Describe に使用されます。
  • describeSObjects メソッド — 1 つ以上の sObject 型で Describe を実行する Schema クラスのメソッド。
  • Describe Result — sObject または項目の Describe プロパティすべてを含む Schema.DescribeSObjectResult 型のオブジェクト。Describe Result オブジェ���トは、逐次化できず、ランタイムで検証されます。この Result オブジェクトは、sObject トークンまたは describeSObjects メソッドを使用して Describe を実行するときに返されます。

トークンを使用した sObject の記述

トークンからその Describe Result まで、または Describe Result からトークンまでの移動は簡単です。sObject と項目トークンには両方とも、トークンの Describe Result を返すメソッド getDescribe があります。Describe Result で、getSObjectType メソッドと getSObjectField メソッドは、sObject と項目にそれぞれのトークンを返します。

トークンは軽量であるため、それを使用すると、コードはより高速で効率的になります。たとえば、コードで使用する必要がある sObject のデータ型または項目を決定するときに、sObject または項目のトークンバージョンを使用します。たとえば、sObject が Account オブジェクトであるかどうか、または項目が Name 項目とカスタム計算項目のどちらであるかを決定するには、等価演算子 (==) を使用してトークンを比較できます。

次のコードは、sObject プロパティと項目プロパティに関する情報にアクセスするための、トークンと Describe Result の使い方の一般的な例を示しています。

1// Create a new account as the generic type sObject
2sObject s = new Account();
3
4// Verify that the generic sObject is an Account sObject
5System.assert(s.getsObjectType() == Account.sObjectType);
6
7// Get the sObject describe result for the Account object
8Schema.DescribeSObjectResult dsr = Account.sObjectType.getDescribe();
9
10// Get the field describe result for the Name field on the Account object
11Schema.DescribeFieldResult dfr = Schema.sObjectType.Account.fields.Name;
12
13// Verify that the field token is the token for the Name field on an Account object
14System.assert(dfr.getSObjectField() == Account.Name);
15
16// Get the field describe result from the token
17dfr = dfr.getSObjectField().getDescribe();

次のアルゴリズムは、Apex で Describe Information を使用できる方法を示しています。

  1. 組織の sObject のトークンのリストまたは対応付けを作成します (「すべての sObject へのアクセス」を参照)。
  2. アクセスする必要がある sObject を決定します。
  3. sObject の Describe Result を生成します。
  4. 必要に応じて、sObject の項目トークンの対応付けを作成します (「sObject のすべての Field Describe Result へのアクセス」を参照)。
  5. コードがアクセスする必要がある Field Describe Result を作成します。

sObject トークンの使用

Account や MyCustomObject__c などの SObject は、トークンと Describe Result にアクセスするための特別な静的メソッドとメンバー変数を持った静的クラスとして機能します。Describe Result へのアクセス権を得るには、コンパイル時に sObject と項目名を明示的に参照する必要があります。

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

  • Account などの sObject データ型の sObjectType メンバー変数にアクセスします。
  • sObject Describe Result、sObject 変数、リスト、または対応付けの getSObjectType メソッドをコールします。

Schema.SObjectType は sObject トークンのデータ型です。

次の例では、Account sObject のトークンが返されます。

1Schema.sObjectType t = Account.sObjectType;

次の例でも Account sObject のトークンが返されます。

1Account a = new Account();
2Schema.sObjectType t = a.getSObjectType();

この例は、sObject または sObject リストが特定のデータ型かどうか判断するために使用されます。

1// Create a generic sObject variable s
2SObject s = Database.query('SELECT Id FROM Account LIMIT 1');
3
4// Verify if that sObject variable is an Account token
5System.assertEquals(s.getSObjectType(), Account.sObjectType);
6
7// Create a list of generic sObjects 
8List<sObject> sobjList = new Account[]{};
9
10// Verify if the list of sObjects contains Account tokens
11System.assertEquals(sobjList.getSObjectType(), Account.sObjectType);

一部の標準 sObject には、sObjectType と呼ばれる項目があります。たとえば、AssignmentRule、QueueSObject、および RecordType があります。これらのデータ型の sObject は、トークンの取得する場合は常に getSObjectType メソッドを使用します。プロパティを使用する場合 (たとえば RecordType.sObjectType)、項目が返されます。

トークンを使用した sObject Describe Result の取得

sObject の Describe Result にアクセスするには、次のいずれかのメソッドを使用します。
  • sObject トークンの getDescribe メソッドをコールします。
  • sObject の名前が付いている Schema sObjectType 静的変数を使用します。たとえば、Schema.sObjectType.Lead です。

Schema.DescribeSObjectResult は sObject Describe Result のデータ型です。

次の例では、sObject トークンで getDescribe メソッドを使用します。

1Schema.DescribeSObjectResult dsr = Account.sObjectType.getDescribe();
次の例では、Schema sObjectType 静的メンバー変数を使用します。
1Schema.DescribeSObjectResult dsr = Schema.SObjectType.Account;

sObject Describe Result で使用可能なメソッドについての詳細は、「DescribeSObjectResult クラス」を参照してください。