一、Scala中的類型變量Bounds代碼實戰
//上界
class Pair[T <: Comparable[T]] (val first : T, val second : T) { //Comparable[T]是父類
//若對T不做限定,則不確定first這個類型是否有compareTo這個方法。
//Comparable[T]是T的上界,T是Comparable[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) //R是父類,T是子類
//從R的角度看:T是R的下界
//從T的角度看:R是T的上界
//例如:Person是Student的父類、上界,Student是Person的子類、下界。顯然可以用Person類型來代替Student類型。(面向接口編程)
}
object Type_Variable_Bounds_43 {
def main(args : Array[String]) {
val pair = new Pair("Spark", "Hadoop")
println(pair.bigger)
}
}
輸出:Spark二、類型變量Bounds在Spark中的廣泛應用
def hadoopFile[K, V](
path: String,
inputFormatClass: Class[_ <: InputFormat[K, V]], ...
讀取hadoop文件的方法 ,用上界限定必須具有某些特徵參考資料來源於大數據夢工廠 深入淺出scala 第43講 由王家林老師講解