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;