摘要:相關(guān)接口簡(jiǎn)介什么是接口,它代表這樣的一個(gè)函數(shù),接受一個(gè)參數(shù),然后返回一個(gè)結(jié)果。參數(shù)和返回值相互轉(zhuǎn)化的個(gè)作為參數(shù)的和個(gè)作為返回值的相互組合去掉重復(fù)的嗯,又到種接口,,,,,。
Function相關(guān)接口簡(jiǎn)介 什么是Function接口?
interface Function
R apply(T t)
表示,接受一個(gè)類(lèi)型為T的參數(shù)t,返回一個(gè)類(lèi)型為R的結(jié)果。注意:
T和R可以是同一種類(lèi)型,當(dāng)然也可以是不同的類(lèi)型。
這里只接受一個(gè)參數(shù)。
那么問(wèn)題來(lái)了,我有兩個(gè)、三個(gè)參數(shù)怎么辦?
什么是BiFunction接口?interface BiFunction
R apply(T t, U u);
表示,接受兩個(gè)參數(shù)t和u,類(lèi)型分別為T和U的,返回一個(gè)類(lèi)型為R的結(jié)果。注意:
T、U和R可以是同一種類(lèi)型,當(dāng)然也可以是不同的類(lèi)型。
這里只接受兩個(gè)參數(shù)。
現(xiàn)在咱們?cè)賮?lái)看上面的問(wèn)題,三個(gè)參數(shù)的時(shí)候怎么辦?function包下并沒(méi)有這樣的接口,所以咯,自己動(dòng)手豐衣足食:
public interface TripleFunction更進(jìn)一步{ R apply(T t, U u, M m); }
function包還很貼心地為我們提供了很多常用的functional接口,其中很大一部分就是和原始類(lèi)型(Primitive Type)有關(guān)的。一旦掌握了其中的規(guī)律,可以達(dá)到舉一反三、事半功倍的效果。下面就跟著彬哥一起來(lái)看看吧。
以作為參數(shù)的原始類(lèi)型來(lái)劃分
DoubleFunction,接受一個(gè)類(lèi)型為double的參數(shù),返回一個(gè)結(jié)果。
@FunctionalInterface public interface DoubleFunction{ R apply(double value); }
IntFunction,接受一個(gè)類(lèi)型為int的參數(shù),返回一個(gè)結(jié)果。
@FunctionalInterface public interface IntFunction{ R apply(int value); }
LongFunction,接受一個(gè)類(lèi)型為long的參數(shù),返回一個(gè)結(jié)果。
@FunctionalInterface public interface LongFunction以作為返回值的原始類(lèi)型來(lái)劃分{ R apply(long value); }
ToDoubleFunction,接受一個(gè)參數(shù),返回一個(gè)類(lèi)型為double的結(jié)果。
@FunctionalInterface public interface ToDoubleFunction{ double applyAsDouble(T value); }
ToIntFunction,接受一個(gè)參數(shù),返回一個(gè)類(lèi)型為int的結(jié)果。
@FunctionalInterface public interface ToIntFunction{ int applyAsInt(T value); }
ToLongFunction,接受一個(gè)參數(shù),返回一個(gè)類(lèi)型為long的結(jié)果。
@FunctionalInterface public interface ToLongFunction參數(shù)和返回值相互轉(zhuǎn)化的{ long applyAsLong(T value); }
3個(gè)作為參數(shù)的和3個(gè)作為返回值的相互組合、去掉重復(fù)的
嗯,又Get到6種functional接口:
DoubleToIntFunction,DoubleToLongFunction,IntToDoubleFunction,IntToLongFunction,LongToDoubleFunction,LongToIntFunction。
再更進(jìn)一步剛剛咱們劃分出來(lái)的這個(gè)12個(gè)functional接口都是和Function相關(guān)的(一元),那function包有沒(méi)有給我們提供其他和BiFunction相關(guān)的functional接口呢?
當(dāng)然有。
那咱們就來(lái)看看這些二元的functional接口吧。
ToDoubleBiFunction,接受兩個(gè)參數(shù),返回一個(gè)類(lèi)型為double的結(jié)果。
@FunctionalInterface public interface ToDoubleBiFunction{ double applyAsDouble(T t, U u); }
ToIntBiFunction,接受兩個(gè)參數(shù),返回一個(gè)類(lèi)型為int的結(jié)果。
@FunctionalInterface public interface ToIntBiFunction{ int applyAsInt(T t, U u); }
ToLongBiFunction,接受兩個(gè)參數(shù),返回一個(gè)類(lèi)型為long的結(jié)果。
@FunctionalInterface public interface ToLongBiFunction{ long applyAsLong(T t, U u); }
彬哥,這些只是作為返回值的接口,按照上面一元function的劃分,那作為參數(shù)和相互轉(zhuǎn)化的二元接口呢?
那些啊,funciton包就并沒(méi)有提供了,一來(lái)不常用,二來(lái)啊,經(jīng)過(guò)彬哥的介紹,相信你已經(jīng)掌握規(guī)律了,很容易就寫(xiě)出來(lái)了吧?那就作為課后作業(yè)如何?
小結(jié)這一講,咱們主要介紹了Function相關(guān)的functional接口,按大的方面可以以一元和二元來(lái)分類(lèi);再細(xì)分的話,可以按原始類(lèi)型作為參數(shù)、作為返回值和參數(shù)返回值相互轉(zhuǎn)化的類(lèi)別來(lái)劃分。
另外呀,可以用function包概述及大綱作為參考手冊(cè)來(lái)回顧和查詢(xún)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/71857.html
摘要:簡(jiǎn)單介紹下規(guī)范里面迭代器相關(guān)的概念。接口指定迭代器對(duì)象必須實(shí)現(xiàn)一個(gè)方法,如下示例偽代碼。方法是否接受參數(shù),在規(guī)范中并不嚴(yán)格限定,取決于實(shí)現(xiàn)當(dāng)前這個(gè)迭代器的對(duì)象。表示迭代終結(jié),后續(xù)再調(diào)用當(dāng)前迭代器的方法,返回的對(duì)象一律為。 簡(jiǎn)單介紹下 ES6 規(guī)范里面迭代器(Iterator)相關(guān)的概念。最近為啥會(huì)看到迭代器,是因?yàn)榭戳?fetch 相關(guān)的 Headers 接口,為了實(shí)現(xiàn)下 Header...
摘要:目前通常指代基于以太坊或者上的智能合約開(kāi)發(fā)的相關(guān)應(yīng)用。引入以太坊通過(guò)的交互流程大致如下總結(jié)隨著區(qū)塊鏈近些年的大紅大紫,被推上了風(fēng)口浪尖,本文從技術(shù)的角度大致介紹了一下所涉及的技術(shù)要點(diǎn)。 當(dāng)你開(kāi)始探索區(qū)塊鏈開(kāi)發(fā),需要了解到這些。 showImg(https://segmentfault.com/img/remote/1460000016608233?w=1370&h=389); 一、DA...
摘要:本人非安全專(zhuān)業(yè)相關(guān)人士,了解不多,實(shí)在慚愧。工作原因,在所負(fù)責(zé)的內(nèi)部服務(wù)中遭遇了的困擾,在此記錄一下學(xué)習(xí)過(guò)程及解決方案。,即服務(wù)端請(qǐng)求偽造,是一種由攻擊者構(gòu)造形成由服務(wù)端發(fā)起請(qǐng)求的一個(gè)安全漏洞。通用的解決方案有過(guò)濾返回信息。 Update: 掘金評(píng)論區(qū)有同學(xué)提出通過(guò)域名獲取 IP 地址時(shí)可能遭遇攻擊,感謝提醒。本人非安全專(zhuān)業(yè)相關(guān)人士,了解不多,實(shí)在慚愧。 說(shuō)到 Web 安全,我們前端...
摘要:簡(jiǎn)介原文鏈接簡(jiǎn)稱(chēng)是一種輕量級(jí),解釋型的編程語(yǔ)言,其函數(shù)是一等公民。標(biāo)準(zhǔn)的目標(biāo)是讓任何一種程序設(shè)計(jì)語(yǔ)言能操控使用任何一種標(biāo)記語(yǔ)言編寫(xiě)出的任何一份文檔。核心規(guī)定了如何映射基于的文檔結(jié)構(gòu),以便簡(jiǎn)化對(duì)文檔的任意部分的訪問(wèn)和操作。 JavaScript 簡(jiǎn)介 原文鏈接 JavaScript ( 簡(jiǎn)稱(chēng):JS ) 是一種 輕量級(jí),解釋型 的編程語(yǔ)言,其函數(shù)是一等公民。眾所周知,它是用于網(wǎng)頁(yè)開(kāi)發(fā)的腳...
摘要:須知與大多數(shù)抽象類(lèi)一樣,也有抽象方法,不管不能和抽象類(lèi)一樣在接口中包含具體的方法或變量做為抽象性的例外一般約定接口總以字母或者開(kāi)頭接口中定義的所有方法都必須是,這是接口的特性實(shí)現(xiàn)多個(gè)接口時(shí),接口中的方法不能有重名。否則會(huì)導(dǎo)致致命錯(cuò)誤。 須知 與大多數(shù)抽象類(lèi)一樣,interface 也有抽象方法,不管不能和抽象類(lèi)一樣在接口中包含具體的方法或變量(做為抽象性的例外) 一般約定接口總以字...
閱讀 3349·2019-08-30 15:55
閱讀 3011·2019-08-30 13:46
閱讀 1503·2019-08-29 17:29
閱讀 3567·2019-08-29 11:08
閱讀 3502·2019-08-29 11:04
閱讀 1147·2019-08-28 18:20
閱讀 605·2019-08-26 13:37
閱讀 1388·2019-08-26 11:49