小编ABT*_*ABT的帖子

减少Java 8中的UnaryOperator列表

在Java 8中减少UnaryOperator列表的首选方法是什么,直到它们代表一个我可以调用的UnaryOperator应用?例如,我有以下内容

interface MyFilter extends UnaryOperator<MyObject>{};

public MyObject filterIt(List<MyFilter> filters,MyObject obj){
Optional<MyFilter> mf = filters
                           .stream()
                           .reduce( (f1,f2)->(MyFilter)f1.andThen(f2));

return mf.map(f->f.apply(obj)).orElse(obj);

}
Run Code Online (Sandbox Code Playgroud)

但是这个代码将引发ClassCastException(MyFilter)f1.andThen(f2).我真的想要这个代码的效果到底:

MyObject o = obj;
for(MyFilter f:filters){
  o = f.apply(o);
}
return o;
Run Code Online (Sandbox Code Playgroud)

但我也很好奇我们如何使用compose或者将函数集合减少到一个函数andThen.

java functional-programming java-8

8
推荐指数
3
解决办法
2621
查看次数

标签 统计

functional-programming ×1

java ×1

java-8 ×1