Lambda
一、什么是 Lambda
- Lambda 是计算机编程语言,Lambda 表达式是一个匿名函数(简化写法的匿名函数)。
- Lambda 表达式,也可称为闭包(闭包就是能够读取其他函数内部变量的函数。闭包可以理解成“定义在一个函数内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。),它是推动 Java 8 发布的最重要新特性。
- Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。
- 在Java 8里面,所有的Lambda的类型都是一个接口,而Lambda表达式本身,需要是这个接口的实现。简而言之就是,Lambda表达式本身就是一个接口的实现。
- 使用 Lambda 表达式可以使代码变的更加简洁紧凑。
二、语法
Lambda 表达式的语法格式如下:
(parameters) -> expression
或
(parameters) ->{ statements; }
以下是Lambda表达式的重要特征:
- 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
- 可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。
- 可选的大括号:如果主体包含了一个语句,就不需要使用大括号。
- 可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定表达式返回了一个数值。
三、函数式接口
Java中的函数式编程体现就是Lambda,所以函数式接口就是可以适用于Lambda使用的接口。
函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。
只有一个接口函数需要被实现的接口类型,我们叫它”函数式接口“。为避免在这个接口中增加接口函数导致其有多个接口函数需要被实现,变成"非函数接口”,可以加上一个声明@FunctionalInterface, 这样就无法在里面添加新的接口函数了。
在 Java 8 中有一个函数式接口的包 java.util.function,里面定义了函数式接口。