泛型:通俗的講,比如需要定義一個(gè)函數(shù),函數(shù)的參數(shù)可以接受任意類型。我們不可能一一列舉所有的參數(shù)類型重載(overload)函數(shù)。
那么程序引入了一個(gè)稱之為泛型的東西,這個(gè)類型可以代表任意的數(shù)據(jù)類型。
例如List,在創(chuàng)建List時(shí),可以傳入×××、字符串、浮點(diǎn)數(shù)等等任意類型。那是因?yàn)長(zhǎng)ist在類定義時(shí)引用了泛型。
List的定義
sealed abstract class List[+A] extends AbstractSeq[A] with LinearSeq[A] with Product with GenericTraversableTemplate[A, List] with LinearSeqOptimized[A, List[A]] with Serializable
其中A就是類型,當(dāng)然A你可以寫成任意的標(biāo)識(shí)符。
泛型應(yīng)用在類和函數(shù)中,代碼示例如下:
package com.dt.scala.type_parameterization //泛型類 F,S,T 是類型,后面引用該類型 class Triple[F,S,T](first: F,second: S,third: T) object Hello_type_parameterization { def main(args: Array[String]): Unit = { //創(chuàng)建一個(gè)對(duì)象,傳入?yún)?shù)類型為 String、Int、Double val triple1 = new Triple("Spark",3,3.14) // 可見,定義時(shí)使用泛型,在調(diào)用時(shí)可以根據(jù)自己的需要傳入任何類型。 //也可以用如下方式創(chuàng)建對(duì)象 val triple2 = new Triple[String,String,String]("Spark","Scala","Kafka") //new 的時(shí)候,指定類型。那么傳入的參數(shù),必須是指定的類型 // 泛型函數(shù) // 定義一個(gè)函數(shù),可以獲取各類List的中間位置的值 def getData[T](l: List[T])={ l.take(l.length/2) } println(getData(List("a","b","c"))) println(getData(List(1,2,3,4,5,6))) } }
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
文章標(biāo)題:第42講:Scala中泛型類、泛型函數(shù)、泛型在Spark中的廣泛應(yīng)用-創(chuàng)新互聯(lián)
分享URL:http://jinyejixie.com/article10/dedsdo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、網(wǎng)頁(yè)設(shè)計(jì)公司、用戶體驗(yàn)、網(wǎng)站策劃、云服務(wù)器、App開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容