scala-43:Scala中类型变量Bounds代码实战及其在Spark中的应用源码解析

来源:互联网 发布:懒蛋蛋布丁玩具淘宝 编辑:程序博客网 时间:2024/04/29 22:12

内容:

1、Scala中的类型变量Bounds代码实战

2、泛型变量BoundsSpark中的应用

class Pair[T <: Comparable[T]](val first : T,val second : T){  def bigger = if(first.compareTo(second) > 0)first else second  }class Pair_Lower_Bound[T](val first:T,val second:T){  def replaceFirst[R >: T](newFirst:R)= new Pair_Lower_Bound[R](newFirst,second)}object Typy_Variables_Bounds {  def main(args: Array[String]){    val pair = new Pair("Spark", "Hadoop")    println(pair.bigger)  }}

   上述代码中给泛型类Pair中的类型T一个限定,即类型为T的成员有一个方法为CompareTo,如注释掉的代码会报错,因为不知道firstsecond的具体类型,无法判定firstsecond是否有CompareTo,那么就需要对T有一个限定(对变量类型本身的限定)。具体限定为[T<:Comparable[T]],即T类型为Comparable的子类型(如:compareTo),比较的实现为函数bigger。Class replaceFirst[R:>T]说明R类型为T的父类,Pair[T:<ComparableTo[T]]说明T类型为ComparableTo[T]的下界。


0 0