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

来源:互联网 发布:中午跑步 知乎 编辑:程序博客网 时间:2024/05/16 19:03

一、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讲 由王家林老师讲解


阅读全文
0 0
原创粉丝点击