Namespace Prefix

DEX455 - Apex 类与 Java 类的区别

📄 第 152 页 🎬 视频课程

课程章节介绍

各位同学,我们来看一下这个关于命名空间前缀的知识点。在Salesforce里,如果你要开发一个托管包,发布到AppExchange上去,那就必须要用到一个叫命名空间前缀的东西。 简单说,这个命名空间前缀就像是一个全球唯一的代号。开发者在注册的时候,要选一个独一无二的字符串,之后这个代号就会永远跟你的包绑定在一起了。一旦分配了,就再也不能更改,所以选的时候一定要想好,别回头想改都改不了。 那为什么要用这个东西呢?主要是为了避免名字冲突。你想啊,全球那么多开发者都在建自定义对象、自定义字段,万一大家都起了同一个名字,比如都叫“订单对象”,那就乱了。但加上了你的命名空间前缀,比如你注册的前缀是“myNS”,那你的订单对象全名就变成了“myNS__Order__c”,别人哪怕也有个“Order__c”,但它们带有不同的前缀,系统就能分得清清楚楚。 你看这个格式,记住就是用两个下划线把前缀和对象名连起来,后面再跟两个下划线和“c”。比如说“namespacePrefix__ObjectName__c”,如果是字段也是一样,“namespacePrefix__FieldName__c”。这里幻灯片上写的“names_predict__obj_or_field_list_c”其实就是想表达这个意思,大家在脑子里把它替换成实际的前缀和名称就行了。 在Apex代码里,系统还有个很聪明的默认解析规则:它会假设你当前代码所在的命名空间,就是你所有引用的默认命名空间。什么意思呢?比如你在自己的托管包里写Apex类,这个包已经带上了前缀“myNS”,那你在代码里直接写“Order__c”这样不带前缀的对象名,Apex解析器会自动帮你把它识别成“myNS__Order__c”。也就是说,在包内部引用同一个包里的东西时,你可以省掉前缀不写,代码写起来更清爽。 但要注意,如果你在包外面,或者在一个没有命名空间的环境里,去引用从AppExchange安装的托管包里的对象或者字段,那就必须老老实实把前缀加上。简单记就是:只有引用安装来的托管包里的自定义组件时,才用得到命名空间前缀,自己玩自己内部的东西就不用。 好,这一页的核心就是三点:一是命名空间前缀是什么、为什么要用;二是它的标准格式;三是Apex里的默认解析规则帮你省事,但跨包引用时必须写全。大家理解了吗?我们继续下一张。

关键词

Apex Salesforce Developer Guide