Apex 中的自定义迭代器
迭代器
迭代器(iterator)可以遍历一个集合变量中的每个元素。Apex提供了Iterator接口来让开发者实现自定义的迭代器。
Iterator接口
Iterator接口定义了两个函数:
- hasNext():返回Boolean类型,表示被遍历的集合变量中是否还有下一个元素
- next():返回集合变量中要被遍历的下一个元素
实现Iterator接口的类中所有的函数必须是global或public的。
示例代码(摘录自官方文档):
global class CustomIterable
implements Iterator<Account>{
List<Account> accs {get; set;}
Integer i {get; set;}
public CustomIterable(){
accs =
[SELECT Id, Name,
NumberOfEmployees
FROM Account
WHERE Name = 'false'];
i = 0;
}
global boolean hasNext(){
if(i >= accs.size()) {
return false;
} else {
return true;
}
}
global Account next(){
// 8 is an arbitrary
// constant in this example
// that represents the
// maximum size of the list.
if(i == 8){return null;}
i++;
return accs[i-1];
}
}
开发者可以使用Iterator类来实现自定义迭代器类,比如下面这段代码,就是使用了上面代码中定义的类(摘录自官方文档):
global class foo implements iterable<Account>{
global Iterator<Account> Iterator(){
return new CustomIterable();
}
}