Custom Types in Collections

DEX455 - Apex 类与 Java 类的区别

📄 第 160 页 🎬 视频课程

课程章节介绍

同学们,咱们在Salesforce里经常会用到集合,比如列表、映射或者集。我们知道这些集合里可以放基础类型,比如字符串、数字。但实际开发中,我们经常需要把自定义的Apex类对象也放到集合里面去。 比如说,您用一个列表来存自己定义的“客户”对象,这是完全没问题的,而且还能排序——只要您实现了Comparable接口。这很简单。 不过呢,当您把自定义类型的对象放到映射里当键,或者放到集里面去重的时候,就需要注意了。因为映射的键不能重复,集里的元素也不能重复,系统怎么判断两个对象是不是一样的呢?它默认是比较内存地址,但很多时候我们需要按业务逻辑来判断,比如两个客户对象,如果ID相同,就应该认为是同一个。 所以,为了让映射和集能正确识别您的自定义类型,您必须在类里提供两个方法:equals和hashCode。equals用来定义两个对象什么时候相等,hashCode返回一个整数值,用来快速在集合里定位。这两个方法必须同时覆盖,而且要遵守约定:如果两个对象相等,它们的hashCode必须相同。如果您不提供,系统会用默认的,那集和映射就可能得出意想不到的结果。 简单说,只要您打算把自己的类用在集里,或者作为映射的键,就别忘了写好equals和hashCode方法。这样集合才能听话,按您想要的方式去重和匹配。好,关于集合里的自定义类型,我们就先说到这儿。

关键词

Apex Salesforce Developer Guide