Salesforce 的数据模型是基于 sObject 的。在 Apex 中,全部的标准对象、自定义对象都是继承自 sObject 的。xcode
关于在 Apex 中获得 sObject 的信息,咱们要基于两点来使用:函数
详细的方法能够查阅官方文档。spa
下面用一些基本的例子来讲明在 Apex 中获得 sObject 信息的方法和语法。code
使用 getSObjectType() 方法能够获得当前 sObject 变量的类型。与此相似,使用 “XXX.sObjectType” 的语法能够获得名为 “XXX” 的 sObject 的类型。htm
// 定义一个 sObject 变量,在此以 Account 为例 sObject obj = new Account(); // 获得当前的 sObject 的类型 Schema.sObjectType objType = obj.getSObjectType(); // 确认其类型是不是 Account System.assertEquals(objType, Account.sObjectType);
一样的语法能够用在 sObject 列表变量中。对象
// 定义一个 sObject 列表变量,在此以 Account 为例 List<sObject> objList = new List<Account>(); // 获得当前的 sObject 列表的类型 Schema.sObjectType objListType = objList.getSObjectType(); // 确认其类型是不是 Account System.assertEquals(objListType, Account.sObjectType);
使用 describeSObjects() 函数能够获得多个 sObject 类型的信息。继承
// 定义字符串列表,其中包含若干 sObject 的 API 名称 List<String> objTypeList = new List<String>{'Account', 'ExampleCustomObj__c'}; // 获得 Account 和 ExampleCustomObj__c 的信息 Schema.DescribeSobjectResult[] results = Schema.describeSObjects(objTypeList);
使用 getDescribe() 方法能够获得当前 sObject 的类型详细信息。与此相似,使用 “Schema.sObjectType.XXX” 能够获得名为 “XXX” 的 sObject 的类型详细信息。文档
// 获得 Account 类型的描述信息 Schema.DescribeSObjectResult dsr = Account.sObjectType.getDescribe(); // 确认其信息是 Account 类型的信息 System.assertEquals(dsr, Schema.sObjectType.Account);
Schema 类中定义了 Schema.DescribeFieldResult 类,能够用来存储字段的信息。获得字段信息的方法与上述示例相似。字符串
// 获得 Account 类型的 Name 字段的信息 Schema.DescribeFieldResult dfr = Schema.sObjectType.Account.fields.Name; // 获得字段的信息 Schema.SObjectField fieldInfo = dfr.getSObjectField(); // 确认字段的类型 System.assertEquals(fieldInfo, Account.Name); // 获得字段的描述信息 dfr = dfr.getSObjectField().getDescribe(); // 获得关于 Account 类型全部字段的信息,保存到一个 Map 变量中 Map<String, Schema.SObjectField> fieldMap = Schema.SObjectType.Account.fields.getMap();
因为用户不必定对 sObject 对象或字段有权限,因此上述代码在不一样环境下执行会有不一样的结果。get
在普通的 Apex 类中执行的时候,用户的权限没有影响。
在匿名代码段中执行的时候,用户的权限会影响到返回的结果。只有用户有权限的类型或字段信息才会返回。