Custom Iterators

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

📄 第 135 页 🎬 视频课程

课程章节介绍

同学们,今天我们来讲一个在Apex里特别有用的概念,就是迭代器和可迭代对象。简单说,迭代器就是帮你一个一个地访问集合里面所有东西的工具。 想象一下,你有一个装着很多物品的箱子,你想依次拿出每个物品看看。迭代器就像你的手,每次拿一个,拿完还能告诉你“还有没有下一个”。在代码里,我们有两个关键方法:hasNext()用来问还有没有下一个;next()就是取出下一个。如果你想自定义自己的迭代器,就需要写一个Apex类,实现这个Iterator接口,里面完整地写出hasNext()和next()。 但是,如果你自己发明了一种新的数据结构,不是用Salesforce标准的列表,那你就要让这个数据结构能够被遍历,这时候就要实现Iterable接口。这个接口只有一个方法,叫iterator(),它返回一个迭代器对象。这样别人拿到你的数据结构,调用iterator()就能得到一个迭代器,然后就能用hasNext和next来逐个访问你的数据了。 还要提醒一下,这两个接口里的方法,声明时必须是global或者public,这样其他代码才能调用。 最后有一个非常实用的点:在批处理Apex中,也就是实现Database.Batchable接口时,你可以返回一个自定义的可迭代对象作为start方法的数据源,而不仅仅是查询返回的列表。这就意味着你可以用迭代器的逻辑来决定批处理每次处理哪些记录,让批处理更加灵活。 总结一下,Iterator让你能一个个拿东西,Iterable让你的整个集合能被遍历,而自定义迭代器还能用在批处理里控制数据流。是不是感觉这些概念一下子清晰了?

关键词

Apex Salesforce Developer Guide