文章目录
- 1. 引言
- 2. 第一个Lambda表达式
- 2.1 如何辨别Lambda表达式
- 2.2 闭包
- 2.3 函数接口
- 3. 总结
Lambda表达式和闭包你真的理解Lambda表达式和闭包嘛什么是JavaScript闭包
public void methodA(..){
//既成事实的final变量
String name = "little motor";
//Lambda表达式中的自由符号name此时有值"little motor",
//它将一个开放的、仍然包含一些未定义的符号lambda表达式变为一个关闭的lambda表达式,
//使这个lambda表达式不再具有任何自由符号,即闭包。
button.addActionListener(event -> System.out.println("hi" + name));
}
2.3 函数接口
函数接口是只有一个抽象方法的接口,用作Lambda表达式的类型,方法的签名并不重要,只要方法签名和Lambda表达式的类型匹配即可,但是建议为参数起一个有意义的名字。下面是一些重要的函数接口
接口 | 参数 | 返回类型 | 示例 |
Predicate<T> (断言) | T | boolean | 这张唱片已经发行了吗 |
Consumer<T>(消费者) | T | void | 输出一个值 |
Function<T,R> | T | R | 获取Artist对象的名字 |
Supplier<T>(生产者) | None | T | 工厂方法 |
UnaryOperator<T>(一元操作) | T | T | 逻辑非(!) |
BinaryOperator<T> | (T,T) | T | 两个数的乘积 |
3. 总结
- Lambda表达式是一种匿名方法,将行为像数据一样进行传递。
- Lambda表达式常见结构:BinaryOperator add = (x, y) -> x + y;
- 函数接口指具有单个抽象方法的接口,用来表示Lambda表达式的类型。