lambda表示数学符号"λ",计算机领域中λ代表“λ演算”,表达了计算机中最基本的概念:“调用”和“置换”。只能用于函数式接口。
为什么使用lambda?
1,java是面向对象的语言,不能像函数式语言那样嵌套定义方法。
2,java的匿名内部类只能存在于创建它的线程中,不能运行在多线程中,无法充分利用多核的硬件优势。
3,匿名内部类的缺点还有:
一、语法相对复杂。
二、在调用内部类的上下文中,指引和this的指代容易混淆。
三、类加载和实例创建语法不可避免。
四、不能引用外部的非final对象。
五、不能抽象化控制流程
如何使用lambda?
1、参数列表
2、箭头符号"->"
3、代码块。
lambda语法:
([形参列表,不带数据类型])->{
//执行语句,可以有返回值
}
lambda实例:
第一个:
public class Test01_lambda01 {
public static void main(String[] args) {
new Runnable() {
@Override
public void run() {
System.out.println("匿名内部类实现Runnable接口");
}
}.run();
int i=1;
Runnable r=()->{
System.out.println("用lambda实现Runnable接口");
System.out.println("i="+i);
};
r.run();
}
}
第二个:
public class Test02_lambda02 {
public static void main(String[] args) {
new Action() {
@Override
public void execute(String content) {
// TODO Auto-generated method stub
System.out.println(content);
}
}.execute("jdk1.8之前的匿名内部类实现方式,执行登录操作");;
Action login=(String content)->{
System.out.println(content);
};
login.execute("jdk1.8的lambda实现登录操作");
}
static interface Action{
void execute(String content);
}
}