1、lambda概述
lambda表示数学符号“λ”,计算机领域中λ代表“λ演算”,表达了计算机中最基本的概念:“调用”和“置换”。
2、为什么使用lambda
一、Java是面向对象的语言,不能像函数式语言那样嵌套定义方法。
二、Java的匿名内部类只能存在于创建它的线程中,不能运行在多线程中,无法充分利用多核的硬件优势
三、匿名内部类的缺点还有:
1、语法相对复杂
2、在调用内部类的上下文中,指引和this的指代容易混淆
3、类加载和实例创建语法不可避免
4、不能引用外部的非final对象。
5、不能抽象化控制流程
3、如何使用lambda
lambda的语法包括三部分
1、参数列表
2、箭头符号 ->
3、代码块
例子1:用lambda简化Runnable接口的实现方式
new Runnable(){
@Override
public void run(){
System.out.println("匿名内部类实现方式");
)
}.run();
// lambda实现方式
int i;
Runnable r = ()->{
System.out.println("用lambda方式实现"); //①
System.out.println("i = "+i); //②
}
r.run();
}
但是在这里不允许改变外部变量的值,比如在①、②中间加入i++即会报错
例子2: lambda实现自定义接口,模拟登陆操作