1、Lambda表达式可以理解为一个匿名函数:它没有名称,但有参数列表、函数主体、返回类型,可能还有一个可以抛出的异常的列表
2、Lambda表达式让你可以简洁地传递代码。
3、函数式接口:仅仅声明了一个抽象方法的接口。当使用@FunctionalInterface注解时,则必须只能包含一个抽象方法,否则编译错误。
4、只有在接受函数式接口的地方才可以使用Lambda表达式。
5、Lambda表达式允许直接内联函数,为函数式接口的抽象方法提供实现,并且将整个表达式作为函数式接口的一个实例。
6、Java8自带一些常用的函数式接口,放在java.util.function包里,包括Predicate<T>、Funcation<T,R>、Supplier<T>、Consumer<T>和BinaryOperator<T>。
7、为了避免装箱操作,对Predicate<T>和Funcation<T,R>等通用函数式接口的原始类型特殊化:IntPredicate、IntToLongFunction等。
8、环绕执行模式(即在方法所必需的代码中间,你需要执行点什么操作,比如资源分配和清理)可以配合Lambda提高灵活性和可重用性。
9、Lambda表达式所需要代表的类型称为目标类型,Java编译器会从上下文(目标类型)来推断出用什么函数式接口来配合Lambda表达式。
10、方法引用可以重复使用现有的方法实现并直接传递它们。
11、Comparator、Predicate和Funcation等函数式接口都有几个可以用来结合Lambda表达式的默认方法。
12、函数复合:将多个相同类型的Lambda(函数)按照预定的流程整合成一个。
网友评论