一葱椭、典型場(chǎng)景--點(diǎn)擊事件
java語(yǔ)言:
button.addActionListener(new ActionListener()){
public void actionPerformed(ActionEvent event){
println(''button clicked'')
}
}
lambda表達(dá)式寫法:
button.addActionListener(event -> println(''button clicked''));
二惦辛、函數(shù)式接口
函數(shù)式接口是完完全全的接口,和interface沒(méi)有任何區(qū)別实幕。
首先看一下Jdk中的Runnable接口飞崖, 它就是一個(gè)函數(shù)式接口慰毅。
public interface Runnable {
public abstract void run();
}
只包含一個(gè)抽象方法的接口氮帐, 我們稱之為函數(shù)式接口嗅虏。
匿名內(nèi)部類的寫法:
new Thread(new Runnable() {
@Override
public void run() {
doSomeThing();
}
}).start();
Lambda表達(dá)式的寫法:
new Thread(
() -> dosomething()
).start();
三、Lambda表達(dá)式
a.類型
Java中的lambda表達(dá)式是有類型的上沐,每個(gè)lambda表達(dá)式 的類型對(duì)應(yīng)著一個(gè)函 數(shù)式接口
b.幾種基本的寫法
Runnable noArgument = () -> System.out.println("Hello, world!");
ActionListener onArgument = event -> System.out.println("button clicked");
Runnable multiStatement = () -> {
System.out.print("Hello, ");
System.out.println(" world");
};
BinaryOperator<Long> add = (x, y) -> x + y;
BinaryOperator<Long> addExplicit = (Long x, Long y) -> x + y; //顯式聲明 類型參數(shù)
C.Lambda表達(dá)式的基本組成
一個(gè)是表達(dá)式參數(shù)皮服,用()包含;二是代碼塊参咙,用{}包含龄广。這兩部分之間用 -> 分開(kāi)。
Lambda表達(dá)式參數(shù)部分:參數(shù)的類型蕴侧、()都可以酌情省略择同。
注意:
1.lambda表達(dá)式對(duì)應(yīng)的接口抽象方法沒(méi)有參數(shù),此時(shí)的()不可省略净宵。
2.有一個(gè)參數(shù)時(shí)敲才,()可以省略,參數(shù)類型酌情省略
栗子:
1). (ActionEvent event) ->{} 2). (event) -> {} 3). event -> {}
3.參數(shù)大于一個(gè)時(shí)择葡,()不可省略紧武。
D.代碼塊
當(dāng)lambda表達(dá)式對(duì)應(yīng)的函數(shù)式接口的抽象方法存在返回值,并且代碼塊中僅有返回語(yǔ)句敏储,可以省略return關(guān)鍵字阻星。