Scala泛型

 1 package big.data.analyse.dataSet
 2 
 3 import scala.reflect.ClassTag
 4 
 5 /**
 6   * 泛型
 7   * Created by zhen on 2018/11/24.
 8   */
 9 class Triple[F : ClassTag, S , T](val first : F, val second : S, val third : T)
10 /**
11   * 泛型类型限定
12   */
13 class Pair[T <: Comparable[T]](val left : T, val right : T){
14   def bigger = if(left.compareTo(right) > 0) left else right
15 }
16 object Genericity {
17   def main(args: Array[String]) {
18     // 不显式指明泛型类型,使用类型推导
19     val triple = new Triple("Spark", 6, 2.5)
20     // 显式指明泛型类型
21     val tagTriple = new Triple[String, Int, Double]("Python",12, 3.6)
22 
23     //定义方法
24     def getData[T](list : List[T]) = list.mkString
25     println(getData(List("I ", "like ", "Spark")))
26     // 高阶函数
27     val function = getData[String] _
28     println(function(List("Python ", "also ", "powerful")))
29     //测试泛型限定
30     val pair = new Pair("Spark" ,"Python")
31     println(pair.bigger)
32   }
33 }

结果:

原文地址:https://www.cnblogs.com/yszd/p/10011079.html