Scala泛型

Posted yszd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }

结果:

技术分享图片

 

以上是关于Scala泛型的主要内容,如果未能解决你的问题,请参考以下文章

Scala中泛型类型的模式匹配

Scala快速入门--异常处理泛型高阶函数隐式转换

Scala模式匹配泛型类型擦除问题

Scala之类型参数和对象

Scala隐式转换和泛型

Scala泛型