java 8 特性
在java 8種主要引用了兩個(gè)特性: lambda表達(dá)式和stream 流處理。
下面我將使用盡量干凈的話語(yǔ)介紹lambda表達(dá)式倔撞。
lambda 表達(dá)式
lambda表達(dá)式可以理解為匿名函數(shù)
java 中如何傳遞 匿名函數(shù)呢? 方法是只定義一個(gè) 函數(shù)的借口遮精。
interface DoSomething{
String function(String x);
}
然后我們就可以吧lambda表達(dá)式付給這個(gè)借口
下面是一個(gè)例子:
DoSomething x= (s)->{return s;};
從某種意義上來(lái)說(shuō)熬北,匿名函數(shù)是只有一個(gè)方法的匿名類的簡(jiǎn)寫形式:
DoSomething x= new DoSomething() {
@Override
public String function(String x) {
return x;
}
};
其實(shí)上面的lambda表達(dá)式也可以進(jìn)一步簡(jiǎn)寫,這在你熟悉lambda后是有必要的:
DoSomething x= (s)->s;
下行起第三句話是重要的:
下行起第二話話是重要的:
下行起第一句話是重要的:
lambda的力量在于,可以把“操作”作為參數(shù)傳遞馆揉,讓操作稍后實(shí)現(xiàn)。
算了抖拦,還是舉一個(gè)簡(jiǎn)單的例子吧:
TimeUtils.timing(
"event3",//1
() -> {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
},
(time) -> {
System.out.println(time);
return time;
}
);
我們可以實(shí)現(xiàn)這樣的計(jì)時(shí)器升酣。
- 第一個(gè)參數(shù)表示任務(wù)的標(biāo)簽: event3
- 第二個(gè)參數(shù)傳遞計(jì)時(shí)的操作: spleep 100ms
- 對(duì)計(jì)時(shí)進(jìn)行輸出:這里只是打印一下
這個(gè)工具類我有一個(gè)精妙的實(shí)現(xiàn),可惜這頁(yè)紙?zhí)∥覍懖幌隆?br> 但可以給你看一下輸出的結(jié)果:
--------------------------------------------------------------
event3 start -> event3 end
from [2019-12-14 20:35:10] to [2019-12-14 20:35:10]
spend: 0 days: 0 hours: 0 minutes: 0 seconds 101 millisecond 0 nanosecond
--------------------------------------------------------------
關(guān)注公眾號(hào):連狗都會(huì)寫代碼 态罪,獲取相關(guān)代碼噩茄。
image.png
image.png