重いデータセットを反復処理し、コールバック (Google の Guava 関数) を受け取り、データセットのすべての項目でコールバックを実行する関数があります。
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 は最終的なものではなく、定義上最終的なものにすることはできないため、それはできないようです。
この場合の解決策はありますか?それとも、このパターン全体が間違っているのでしょうか?