Lambda基础
Lambda表达式是一个代码块,其基本结构如下:
// 有参lambda表达式
(type param1, type param2,..) -> { code }
// 无参lambda表达式
() -> { code }
// 单个参数,若类型可推断得知,可不写 type
(param1) -> { code }
lambda表达式不需要指定返回值的类型。
注意点:
在 code 中若使用了分支结构,例如 if else 这种结构,需要保证每个分支都有返回值,并且分支包含所有情况。
lambda表达式应该视为一个函数,而非一个对象,需要将其设为JAVA支持函数式编程的工具
函数式接口
定义
只有一个抽象方法的接口称为函数式接口
已定义的常用函数式接口
- Comparator
方法引用
若现有方法已经可以完成lambda表达式需要做的功能,那么可以使用方法引用的方式代替lambda
ClassName::methodName
构造器引用
ClassName::new
参数引用
在lambda表达式外定义的变量,可以在lambda的code中使用同名的变量进行捕获。
被捕获的变量,其值不能发生变化,实际上其应该是最终变量。