Java8終于引進(jìn)了lambda表達(dá)式,這標(biāo)志著Java往函數(shù)式編程又邁進(jìn)了一小步。
在Java8以前的代碼中,為了實現(xiàn)帶一個方法的接口,往往需要定義一個匿名類并復(fù)寫接口方法,代碼顯得很臃腫。比如常見的Comparator接口:
對于只有一個方法的接口,在Java8中,現(xiàn)在可以把它視為一個函數(shù),用lambda表示式簡化如下:
Java8沒有引入新的關(guān)鍵字lambda,而是用()->{}這個奇怪的符號表示lambda函數(shù)。函數(shù)類型不需要申明,可以由接口的方法簽名自動推導(dǎo)出來,對于上面的lambda函數(shù):
參數(shù)由Comparator<String>自動推導(dǎo)出String類型,返回值也必須符合接口的方法簽名。
實際上,lambda表達(dá)式最終也被編譯為一個實現(xiàn)類,不過語法上做了簡化。
對于Java自帶的標(biāo)準(zhǔn)庫里的大量單一方法接口,很多都已經(jīng)標(biāo)記為@FunctionalInterface,表明該接口可以作為函數(shù)使用。
以Runnable接口為例,很多時候干活的代碼還沒有定義class的代碼多,現(xiàn)在可以用lambda實現(xiàn):
在未來的Java代碼中,會出現(xiàn)越來越多的()->{}表達(dá)式。
以上就是長沙達(dá)內(nèi)教育java培訓(xùn)機(jī)構(gòu)的小編針對“Java8新特性視頻,lambda表達(dá)式”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。