Lambda表達(dá)式如何匹配Java的類(lèi)型系統(tǒng)?每一個(gè)lambda都能夠通過(guò)一個(gè)特定的接口,與一個(gè)給定的類(lèi)型進(jìn)行匹配。一個(gè)所謂的函數(shù)式接口必須要有且僅有一個(gè)抽象方法聲明。每個(gè)與之對(duì)應(yīng)的lambda表達(dá)式必須要與抽象方法的聲明相匹配。由于默認(rèn)方法不是抽象的,因此你可以在你的函數(shù)式接口里任意添加默認(rèn)方法。 

任意只包含一個(gè)抽象方法的接口,我們都可以用來(lái)做成lambda表達(dá)式。為了讓你定義的接口滿(mǎn)足要求,你應(yīng)當(dāng)在接口前加上@FunctionalInterface 標(biāo)注。編譯器會(huì)注意到這個(gè)標(biāo)注,如果你的接口中定義了第二個(gè)抽象方法的話,編譯器會(huì)拋出異常。 

舉例: