Schema 名前空間の使用
Schema 名前空間は、スキーマメタデータ情報を操作するためのクラスとメソッドを提供します。Schema.* は暗黙的にインポートされますが、Schema 名前空間要素を使用するときに、管理されていないコードの項目と名前が競合する場合は完全修飾する必要があります。組織に sObject と同じ名前の Apex クラスが含まれる場合、コードでは sObject 名に Schema 名前空間プレフィックスを追加してください。
スキーマクラスのインスタンスを作成するときやスキーマメソッドをコールするときには、この名前空間を省略できます。たとえば、DescribeSObjectResult および FieldSet クラスは Schema 名前空間に含まれるため、次のコードセグメントは等しくなります。
1Schema.DescribeSObjectResult d = Account.sObjectType.getDescribe();
2Map<String, Schema.FieldSet> FSMap = d.fieldSets.getMap();および:
1DescribeSObjectResult d = Account.sObjectType.getDescribe();
2Map<String, FieldSet> FSMap = d.fieldSets.getMap();曖昧さ回避のための Schema 名前空間の使用
カスタムクラスと同じ名前の sObject を参照するには、Schema.object_name を使用します。この曖昧さ回避により、Apex ランタイムに sObject を使用するように指示されます。
1public class Account {
2 public Integer myInteger;
3}
4
5// ...
6
7// Create a standard Account object myAccountSObject
8Schema.Account myAccountSObject = new Schema.Account();
9// Create accountClassInstance, a custom class in your org
10Account accountClassInstance = new Account();
11myAccountSObject.Name = 'Snazzy Account';
12accountClassInstance.myInteger = 1;