dickrong 发表于 2019-1-30 14:14:09

第42讲:Scala中泛型类、泛型函数、泛型在Spark中的广泛应用

  泛型:通俗的讲,比如需要定义一个函数,函数的参数可以接受任意类型。我们不可能一一列举所有的参数类型重载(overload)函数。
  那么程序引入了一个称之为泛型的东西,这个类型可以代表任意的数据类型。
  例如List,在创建List时,可以传入整形、字符串、浮点数等等任意类型。那是因为List在类定义时引用了泛型。
  List的定义
sealed abstract class List[+A] extends AbstractSeq
                                  with LinearSeq
                                  with Product
                                  with GenericTraversableTemplate
                                  with LinearSeqOptimized]
                                  with Serializable  其中A就是类型,当然A你可以写成任意的标识符。
  

  泛型应用在类和函数中,代码示例如下:
package com.dt.scala.type_parameterization
//泛型类 F,S,T 是类型,后面引用该类型
class Triple(first: F,second: S,third: T)
object Hello_type_parameterization {
def main(args: Array): Unit = {
    //创建一个对象,传入参数类型为 String、Int、Double
    val triple1 = new Triple("Spark",3,3.14)
    // 可见,定义时使用泛型,在调用时可以根据自己的需要传入任何类型。
    //也可以用如下方式创建对象
    val triple2 = new Triple("Spark","Scala","Kafka")
    //new 的时候,指定类型。那么传入的参数,必须是指定的类型
    // 泛型函数
    // 定义一个函数,可以获取各类List的中间位置的值
    def getData(l: List)={
      l.take(l.length/2)
    }
    println(getData(List("a","b","c")))
    println(getData(List(1,2,3,4,5,6)))
}
}  




页: [1]
查看完整版本: 第42讲:Scala中泛型类、泛型函数、泛型在Spark中的广泛应用