kag*_*ag0 8 java functional-programming function-composition java-8
功能组成java Function和a 的最佳方法是Consumer什么?例如,给定一些Function<Object, String> f和一些Consumer<String> c然后做的f.andThen(c)感觉自然,然而这不是接口的工作方式.
这两个选项我看到的是要么更换Consumer<String> c用Function<String, Void> c或更改Consumer<String> c,以BiConsumer<Function<Object, String>, String> c做
accept(Function<Object, String> f, Object o) {
String thing = f.apply(o);
//do something with thing
}
Run Code Online (Sandbox Code Playgroud)
其中一个比另一个好吗?有没有更好的办法?
Mis*_*sha 10
这是你想要做的吗?
Consumer<Object> composed = o -> c.accept(f.apply(o));
Run Code Online (Sandbox Code Playgroud)
如果你发现自己经常遇到这个问题,你可以用静态的方法来做这个(但这真的值得吗?):
static<T,R> Consumer<T> applyAndAccept(Function<? super T,? extends R> f, Consumer<R> c){
return t -> c.accept(f.apply(t));
}
Run Code Online (Sandbox Code Playgroud)