在Java之前,所有的函数式编程尝试在Java中都会有些 冗长 和/或 笨拙 ,直到Java 8。
最 直接的 方法是提供一个
Function接口(例如Guava的这种形式),并提供采用和调用该接口的各种方法(例如
Collections#transfrom()我认为您的
map()方法应该执行的操作)。
不好的事情是,您需要
Function使用匿名内部类来实现并经常这样做,该内部类具有非常冗长的语法:
Collection<OutputType> result = Collections.transform(input, new Function<InputType,OutputType>() { public OutputType apply(InputType input) { return frobnicate(input); }});Lambda表达式(在Java
8中引入)使此操作变得相当容易(甚至可能更快)。使用lambdas的等效代码如下所示:
Collection<OutputType> result = Collections.transform(input, SomeClass::frobnicate);
或更冗长,但更灵活:
Collection<OutputType> result = Collections.transform(input, in -> frobnicate(in));



