以前對(duì)于java8 的lambda使用過(guò),就是用在了spring JdbcTemplate 的一些數(shù)據(jù)庫(kù)dml操作方法上,但是并不會(huì)自己書(shū)寫(xiě)一個(gè),今天學(xué)習(xí)了下,還是很好理解的。
第一步、我們建立一個(gè)接口,并且書(shū)寫(xiě)一個(gè)抽象方法
這里要特別注意,想用lambda表達(dá)式方式書(shū)寫(xiě),這里一定只能書(shū)寫(xiě)一個(gè)抽象方法!
在這里不用拽特性,例如說(shuō)重載啊,都不行,我都是用過(guò)了,只允許一個(gè)抽象函數(shù)

建立一個(gè)接口(抽象方法、默認(rèn)方法、靜態(tài)方法)
在這里你看到我的截圖你可能說(shuō)了,你看你這里面有三個(gè)方法,對(duì)啊,一般會(huì)書(shū)寫(xiě)接口的,或者基礎(chǔ)比較好的,都知道,接口里面是可以書(shū)寫(xiě)默認(rèn)方法和靜態(tài)方法的,這種方法是沒(méi)有限制的,但是抽象方法必須只有一個(gè)(普及下知識(shí)點(diǎn)哈:抽象方法是沒(méi)有方法體的,只是虛函數(shù))publicinterfaceTestLambdaService{voidtest(Stringname);defaultvoidtest1(){System.err.println("#test1 perform");}staticvoidtest2(){System.err.println("#test2 perform");}}
第二步、書(shū)寫(xiě)lanbda表達(dá)式實(shí)現(xiàn)接口的抽象方法
TestLambdaService testLambdaService = (String name) -> {? ? ? ? ? ? System.err.println("lanbda test"+name);? ? ? ? };
括號(hào)里面的參數(shù)name String這個(gè)可寫(xiě)可不寫(xiě)
第三步、調(diào)用方法執(zhí)行邏輯
testLambdaService.test("你好");
第四步、運(yùn)行查看輸出結(jié)果

附注:
@FunctionalInterface 這個(gè)注解是放在TestLambdaService 接口之上的,表明了這個(gè)接口是一個(gè)函數(shù)接口

加入函數(shù)接口注解
這個(gè)注釋可以幫助你嚴(yán)格檢查,你是寫(xiě)了一個(gè)抽象方法還是多個(gè),如果書(shū)寫(xiě)多個(gè)抽象方法則直接會(huì)報(bào)錯(cuò)
下一次更新 lambda之 抽象類(lèi)的使用
蟻點(diǎn)廣告君來(lái)啦!??!旅游內(nèi)部特價(jià)票:請(qǐng)假微信ucisoft