考虑这样的课程:
class Aggregator<A,B> {
private final List<BiFunction<A,B,B>> fns = new ArrayList<>();
public void addConsumer(BiConsumer<A,B> consumer) {
fns.add((a,b) -> {
consumer.accept(a, b);
return b;
});
}
public void addFunction(BiFunction<A,B,B> function) {
fns.add(function);
}
public B apply(A a, B b) {
//some example usage
B result = b;
for (BiFunction<A, B, B> fn : fns) {
result = fn.apply(a, result);
}
return result;
}
}
有什么方法可以完成这种功能集合+应用程序而无需支付addConsumer
中的间接费用吗?由于这是一次关闭,所以我要付出相当高的罚款,因为那时我总是碰堆。
简而言之:我想以尽可能少的性能开销组合任意数量的BiConsumer
和BiFunction
。这只是一些示例代码,但是andThen
-chaining并不能缓解问题。