您好,登錄后才能下訂單哦!
泛型:通俗的講,比如需要定義一個函數(shù),函數(shù)的參數(shù)可以接受任意類型。我們不可能一一列舉所有的參數(shù)類型重載(overload)函數(shù)。
那么程序引入了一個稱之為泛型的東西,這個類型可以代表任意的數(shù)據(jù)類型。
例如List,在創(chuàng)建List時,可以傳入×××、字符串、浮點數(shù)等等任意類型。那是因為List在類定義時引用了泛型。
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就是類型,當然A你可以寫成任意的標識符。
泛型應用在類和函數(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)建一個對象,傳入?yún)?shù)類型為 String、Int、Double val triple1 = new Triple("Spark",3,3.14) // 可見,定義時使用泛型,在調(diào)用時可以根據(jù)自己的需要傳入任何類型。 //也可以用如下方式創(chuàng)建對象 val triple2 = new Triple[String,String,String]("Spark","Scala","Kafka") //new 的時候,指定類型。那么傳入的參數(shù),必須是指定的類型 // 泛型函數(shù) // 定義一個函數(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))) } }
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。