课程章节介绍
同学们,今天咱们来聊聊 Apex 里数据类型的一些版本变化,这个内容虽然小,但实际开发中特别容易踩坑。我尽量用大白话给你讲清楚。
首先,从 API 版本 16.0 开始,也就是比较新的版本里,Apex 在一些类型上用了更高精度的 Decimal 数据类型。比较典型的就是“货币”类型。以前可能精度不太够,现在计算金额的时候会更精确,这其实是个好事儿。你在代码里直接写金额数值或者从字段里取值,系统底层已经自动帮你用高精度了,一般不用额外操作,但心里得有数。
第二个变化是从 API 15.0 开始的。以前如果你把一个特别长的字符串塞进一个字段,可能系统就悄悄截断了,不告诉你。但现在不是了,如果你在 Apex 类或者触发器里,给一个变量赋的字符串值,长度超过了字段定义的长度,系统会直接抛出一个运行时错误。这就提醒咱们,写代码的时候要检查一下字段长度,尤其是拼接字符串、处理外部数据的时候,一不小心程序就崩了,所以这个变化其实是强制我们规范操作。
最后,再说两个特殊的数据类型,叫 AnyType 和 Currency。它们不是标准的原始类型,你不能声明一个变量类型是 AnyType 或者 Currency,也不能当方法参数用。那它们在哪儿出现呢?只在系统提供的静态方法里。比如 AnyType 这个类型,是用来做字段历史追踪的,我们查看某个字段修改的历史记录时,系统返回值就是 AnyType 类型,你拿到以后需要转换成实际的类型才能用。而 Currency 这个类型就更局限了,只用在 SOQL 或者 SOSL 查询的 WHERE 条件里,比如你想查某个金额字段等于某个值,就可以用 Currency 类型来表示精确的货币值。但你平时写代码的时候,直接用 Decimal 来表示钱就行了,不会去直接创建 Currency 对象。
总结一下,版本升级之后,数据类型更严格更精确了,咱们写代码时要留意字段长度限制,也记住 AnyType 和 Currency 这两个神奇的类型只能看不能用。这样你在实际开发里就能少碰些莫名其妙的报错。好了,这块内容就这些,有问题随时问我。
关键词
Apex
Salesforce
Developer Guide