本篇文章為大家展示了Lambda怎么在Java中項(xiàng)目中運(yùn)用,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
婺城ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
組織參數(shù)
組織參數(shù)目的就是為了第三方接口的調(diào)用,而且都要符合第三方 API 的要求。拿微信支付 APP 支付接口來(lái)舉個(gè)例子,它的請(qǐng)求報(bào)文大致是這樣的:
微信支付APP支付請(qǐng)求報(bào)文
如果我們記我們封裝后調(diào)用的入?yún)镮NPUT,將INPUT按照上述接口進(jìn)行組織滿足微信 APP 支付接口的參數(shù)為OUTPUT。那么它們的轉(zhuǎn)換關(guān)系其實(shí)就是下面的一個(gè)Lambda抽象:
INPUT -> OUTPUT
數(shù)學(xué)上為:
對(duì)應(yīng)Java中的Lambda函數(shù)是Function。
但是在實(shí)際開發(fā)中需要根據(jù)接口的具體情況做不同的處理,需要引入包含請(qǐng)求方法(上圖中的POST)和接口端點(diǎn),記作TYPE,高中我們講過(guò)函數(shù)替代法,我覺(jué)得這里可以用一用:
如果我們令 :
很容易推導(dǎo)出:
(TYPE,INPUT) -> OUTPUT
對(duì)應(yīng)Java中的Lambda函數(shù)是BiFunction
調(diào)用第三方接口
在Java開發(fā)中,無(wú)論你選擇的請(qǐng)求方式是Spring Framework提供的RestTemplate或者反應(yīng)式客戶端WebClient,或者OKHttp都可以很方便地調(diào)用 Http 接口。也可以抽象,不管你用什么方法都是提供了一個(gè)調(diào)用工具,我們要拿工具來(lái)用就要get,因此非常適合Java中的
@FunctionalInterface public interface Supplier{ /** * Gets a result. * * @return a result */ T get(); }
Lambda式子為:
() -> T
不過(guò)目前Payment Spring Boot對(duì)于調(diào)用層還沒(méi)有抽象的打算,如果考慮到抽象一定會(huì)用Supplier
消費(fèi)結(jié)果
最終我們都需要對(duì)調(diào)用獲取的結(jié)果進(jìn)行消費(fèi),宏觀上只能消費(fèi)一次。對(duì)應(yīng)的Lambda式子:
(T) -> {}
對(duì)T進(jìn)行消費(fèi)是沒(méi)有返回值的。就像吃一個(gè)蘋果,吃完之后是不會(huì)立即有產(chǎn)物的,否則你要趕緊吃點(diǎn) ?。
Java中提供了Consumer
但是在Payment Spring Boot中對(duì)請(qǐng)求結(jié)果是需要返回給調(diào)用端的,也就是需要返回值的,當(dāng)時(shí)我考慮了很久,在Function
上述內(nèi)容就是Lambda怎么在Java中項(xiàng)目中運(yùn)用,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。