我有一个迭代大量数据集的函数,接收回调(谷歌的番石榴函数)并在数据集的每个项目上运行回调:
void processData(..., Function<Item, Void> callback) {
...
for (Item item : data) {
callback.apply(item);
}
}
使用此函数,我想传递一个将所有项目添加到列表或地图的回调:
List<Item> itemList;
processData(..., new Function<Item, Void)() {
@Override public void apply(Item item) {
itemList.add(item);
}
});
但是,似乎我不能这样做,因为 itemList 不是最终的,并且根据定义不能是最终的。
这种情况有解决方案吗?或者也许这整个模式是错误的?