Classes and Casting

DEX455 - Apex 类、对象与接口完全指南

📄 第 144 页 🎬 视频课程

课程章节介绍

好,我们来看一下Apex中的类型转换,以及instanceof关键字。这个概念其实不复杂,你把它想象成搭积木,每个积木都有自己的形状,有时候你需要把一个积木当作另一种形状来用。 首先,在Apex里,所有类型的信息在代码运行的时候都是可用的。也就是说,系统永远知道每个变量到底是什么类型,不会搞混。这给了我们一个方便的能力:强制转换,也叫类型铸造。 强制转换是什么意思呢?就是把一个类的实例,当成另一个类来用。但这里有个规矩:只有当一个类是另一个类的子集时,才能转。比如,你有一个父类叫“动物”,有一个子类叫“猫”。你可以把一只“猫”的对象,强制转换成“动物”类型,因为猫一定是动物。反过来,如果你手上是一个“动物”对象,你不能随随便便就把它当“猫”来用,除非它本质上就是一只猫。这就是“一个是另一个的子集”的意思。 咱们在写代码的时候,常常会碰到需要把对象从一种数据类型转成另一种的情况,这时就要用到强制转换的语法,就是在变量前面加个括号,里面写上目标类型。 另外,接口类型也可以强制转换。接口本身不是类,但你可以把实现了某个接口的对象,强制转换成那个接口的类型,或者把接口类型再转回具体的实现类,甚至是子接口。道理是一样的——只要它们在继承和实现关系上是兼容的。 不过,强制转换有个风险:如果你乱转,比如把一只狗硬当成猫来用,系统运行的时候就会报错,抛出运行时异常。为了避免这种情况,Apex提供了一个很友好的关键字:instanceof。你可以在做转换之前,先用 `instanceof` 检查一下这个对象到底是不是目标类型——就像是先问问“你是猫吗?”,如果它说“是”,你再把它当猫对待。这样就能安全地避免运行时错误。 总结一下,这页Slide的核心就三点: 第一,所有类型信息运行时都知道; 第二,强制转换必须基于有效的父子类或接口实现关系,不能乱转; 第三,为了安全,在转换前请用instanceof验证类型。 这样讲,是不是一下子就清晰了?以后遇到需要类型转换的地方,记住先检查再转换,代码就能稳稳当当不出错。

关键词

Apex Salesforce Developer Guide