Lambda表达式
jdk1.8 新增Lambda表达式
作用
: 简化匿名内部类的
使用前提
: 函数式接口
函数式接口
: 只有一个必须被重写的抽象方法的接口
强制检测是否为函数式接口:
注解@FunctionalInterface
@FunctionalInterface
interface Smoke{
String smoking(int a);
}
语法:
() -> {}
()
:匹配要重写的抽象方法的参数列表
->
:lambda符号 箭头符号 具有上下文推倒的作用
{}
:匹配要重写的抽象方法的方法体
例子:
//匿名内部类
Smoke ss = new Smoke() {
@Override public void smoking()
{
System.out.println("00000");
}
};
lambda 第一种形式
Smoke s = ()->{
System.out.println("11111");
System.out.println("11111");
};
lambda 第二种形式
方法体中如果方法体语句只有一句,方法体前后的{}可以省略
Smoke s = ()->System.out.println("11111");
lambda 第三种形式
如果有参数,参数的数据类型可以省略
Smoke s = (a, b)->System.out.println("11111"+a+b);
lambda 第四种形式
如果有参数只有一个,前后的()可以省略
Smoke s = a->System.out.println("11111"+a);
lambda 第五种形式
如果语句体还有一句,并且3还是return语句,return关键字 以及前后{}可以一起省略
Smoke s = a-> "返回"+a;