在Java Lambda
API中,主要类是java.util.function.Function。
您可以以与其他所有引用相同的方式使用对该接口的引用:将其创建为变量,然后将其作为计算结果返回,依此类推。
这是一个非常简单的示例,可能会对您有所帮助:
public class HigherOrder { public static void main(String[] args) { Function<Integer, Long> addOne = add(1L); System.out.println(addOne.apply(1)); //prints 2 Arrays.asList("test", "new") .parallelStream() // suggestion for execution strategy .map(camelize) // call for static reference .forEach(System.out::println); } private static Function<Integer, Long> add(long l) { return (Integer i) -> l + i; } private static Function<String, String> camelize = (str) -> str.substring(0, 1).toUpperCase() + str.substring(1); }如果需要传递多于1个参数,请看一下
compose方法,但其用法非常棘手。
从我的观点来看,一般而言,Java中的闭包和lambda基本上是语法糖,它们似乎不具有函数式编程的所有功能。



