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)載請附上博文鏈接!