一、lambda表达式语法及应用场景
1)函数式接口
lambda表达式前置条件:
1.必须是函数式接口才可以使用lambda表达式
函数式接口的特点:
1.1接口中标注了@FunctionalInterface注解
1.2接口中只有一个抽象方法,会被编译器自动识别成函数式接口。
1.3接口中有一个抽象方法,同时包含了Object类的其他抽象方法也会被识别成抽象接口(所有的类都是Object类的子类)。
2)lambda表达式的三种编写方式:
expression:单条语句表达式
statement:语句块
reference:方法引用
1.expression单条语句表达式:只能是一个完整的语句
expression表达式中不需要写return关键字,解释器会自动将表达式的计算结果进行返回。
(参数)->表达式
2.statement语句块
(参数)->{表达式};接口中抽象方法有返回值的话,需要在表达式后加上括号。
3.reference:方法引用
如果某个方法在结构上与lambda表达式中对应的方法是匹配的那么就可以直接引用给lambda表达式,其总共包含4种引用类型
基于实例方法的引用:Object::methodName
构造方法引用:className::new
基于参数实例方法引用:className::methodName
静态方法引用:className::staticMethodName