Apex Describe Information — Tokens & Results

DEX455 - Dynamic Apex 完全指南:Describe 信息、动态 SOQL/SOSL 与动态 DML

📄 第 203 页 🎬 视频课程

课程章节介绍

同学们,今天咱们来看一个很实用的话题——在Apex里,怎么去描述或者识别一个sObject,或者一个字段。 Apex给我们提供了两种轻量级的数据结构,再加上一个专门用来获取描述信息的方法。你可能会问,到底是哪两种数据结构呢?一种是,令牌,,也就是Token;另一种就是调用describeSObjects方法之后,返回给你的那个描述结果。咱们习惯把它直接叫作Describe结果。而那个专门的方法,就是,describeSObjects,。 先来看这个,令牌,。令牌是对一个sObject,或者一个字段的超轻量级引用。它非常精简,可以很方便地进行序列化,而且在编译的时候就会帮你验证——你写的这个对象或字段到底存不存在,一编译就知道了。因为它体积小,运行起来就,更快、更高效,。 什么时候用令牌呢?最常见的一个场景,就是你想判断某个sObject到底是不是“账户”对象。这时候,你完全不需要去调用厚重的describe方法,只要用令牌做个相等比较就行了。比如,你拿到一个sObject,用它的`getSObjectType()`取得类型令牌,然后直接跟`Account.SObjectType`用双等号(==)比一下,如果返回true,那它就是账户。像这样: ```apex if(myObj.getSObjectType() == Account.SObjectType) { // 这就是个账户对象 } ``` 是不是特别直接?因为它背后就是很轻量的引用比较,性能开销非常小。 那另一种方式,就是,describeSObjects方法,。这个方法是对sObject类型执行一个完整的描述,返回的结果是一个描述信息对象,里面包含了这个sObject所有的描述属性。比如它有哪些字段、字段是什么类型、能不能创建、能不能更新,等等,非常详尽。你可以把它想象成是一本厚厚的说明书,什么都查得到。 所以说,,令牌是快刀,describe是百科全书,。你只需要知道“这东西是不是账户”的时候,就用令牌去比;当你需要读取很多元数据去做逻辑判断、动态配置的时候,再去用describeSObjects。这样你的代码才能跑得又快又稳。 好,今天这个点很简单,但用好了能明显提升代码质量。下一次咱们再讲讲怎么遍历describe结果里的字段信息。

关键词

Apex Salesforce Developer Guide