2018-10-19 分分鐘教會你使用Lambda表達(dá)式

Java 中使用 Lambda表達(dá)式
Lambda的作用
Lambda表達(dá)式的作用主要是用來簡化接口的創(chuàng)建,interface。
需要注意的是:
1.任何需要使用interface的地方都可以使用Lambda表達(dá)式來簡化;
2.Lambda表達(dá)式不能夠簡化類或者抽象類得創(chuàng)建,如果試圖使用Lambda表達(dá)式去創(chuàng)建一個類或者抽象類
將會報錯如下英文信息 ”Target type of a lambda conversion must be an interface“
這就是為什么Lambda表達(dá)式只用用來簡化創(chuàng)建接口

Java中的Interface
Lambda表達(dá)式既然是用來簡化創(chuàng)建接口的,那么就先看看接口里面都包含些什么

1.接口中可以定義public static final 的常量
2.接口中可以定義多個public的方法
一個接口就包含上面兩方面的內(nèi)容,不會再有其他的東西了
但是這里L(fēng)ambda表達(dá)式只能用來簡化僅包含一個public方法的接口,也就是說,如果一個接口中包含了多個public方法,那么就不能夠使用Lambda表達(dá)式進(jìn)行創(chuàng)建

現(xiàn)在知道了Lambda表達(dá)式只能用來簡化僅包含一個public方法的接口的創(chuàng)建,現(xiàn)在就具體說如何使用Lambda表達(dá)式
無論如何,這個接口中的方法都會以一下的6種形式中的一種出現(xiàn)

1.返回值為void,沒有參數(shù)
2.返回值為void,有一個參數(shù)
3.返回值為void,有多個參數(shù)
4.有返回值,沒有參數(shù)
5.有返回值,有一個參數(shù)
6.有返回值,有多個參數(shù)
現(xiàn)在分別就6種情況給出寫法

public interface In {
void func();
}

In in1 = ()->{};//這基本上最簡單的Lambda表達(dá)式的寫法了,實(shí)現(xiàn)的方法將什么都不會做
In in2 = ()->System.out.println("Func");//這里實(shí)現(xiàn)的方法將會輸出一個字符串
In in3 = ()->{
System.out.println("Func1");
System.out.println("Func2");
};//使用{}來使用多個語句

public interface In {
void func(int a);
}

In in = a->System.out.println(a);
In in = (a)->{};

public interface In {
void func(int a,int b,int c);
}

In in = (a,b,c)->{
//寫入語句
};

public interface In {
int func();
}

In in = ()->2;
In in1 = ()->{return 2;};

public interface In {
int func(int a);
}

In in = a->a+1;
In in2 = a -> {
return a+1;
};

public interface In {
int func(int a,int b,int c);
}

In in = (a,b,c)->a+b+c;
In in1 = (a,b,c)->{
return a+b+c;
};

掌握了上面這幾種情形,現(xiàn)在就拿一些試試,比如說常見的開啟子線程,常規(guī)代碼是這樣的

new Thread(new Runnable() {
@Override
public void run() {
//do something
}
}).start();

這里就可以使用Lambda來簡化上面的寫法

new Thread(()->{
//do something
}).start();

之所以可以這樣寫,就是因?yàn)镽unnable是一個只有一個run方法的接口

所以要記住:所有使用接口的地方都可以Lambda表達(dá)式來進(jìn)行簡化,只是一個簡單的替換而已。

作者:ylqhust
來源:CSDN
原文:https://blog.csdn.net/ylqhust/article/details/50822955
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容