在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.