第43講:Scala中類型變量Bounds代碼實戰及其在Spark中的應用源碼解析

類型變量的界定:

類型變量的上界,類型變量的下界。

上界就是類型必須是界定類型的子類,看如下示例:

package com.dt.scala.type_parameterization

// 我們需要定義一個泛型類Pair,泛型類中有一個bigger方法,用來比較傳入的參數
// 此時泛型類型必須是Comparable的子類,我們可以使用 <: 符號來限定傳入的類型

class Pair[T <: Comparable[T]](first: T,second:T){
  def bigger ={
    if (first.compareTo(second)>=0) first else second 
  }
}

object Type_variables_Bounds {
  def main(args: Array[String]): Unit = {
    val pair = new Pair("Spark","Hadoop")
    println(pair.bigger)
  }
}


下屆:類型必須是界定類型的父類

// 我們使用 >: 符號來做下屆限定
class Pair_Lower_Bounds[T](first: T,second:T){
  def replace[R >: T](newFirst: R) = { //R必須是T的父類
      new Pair_Lower_Bounds(newFirst,second)
  }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章