第43讲:Scala中类型变量Bounds代码实战及其在Spark中的应用源码解析学习笔记

43讲:Scala中类型变量Bounds代码实战及其在Spark中的应用源码解析学习笔记

scala中的类型变量bounds代码实战及其在spark中的应用

类型变量的上界与下界

spark中如何运用类型变量的界定的。

 

上讲讲了泛型 类

//class Pair[T](val first : T, val second : T){

//不定义Tcomparable的话,就不知道T的类型,

//所以也不知道T是否有compareTo方法。故编译器会报错。

class Pair[T <: Comparable[T]](val first : T, val second : T){

  //Pair是泛型类,类型为T的成员具体方法compareTo

  //T类型的限定是<:,即T必须是Comparable[T]类型的子类

  //这样的话T就一定有CompareTo方法。

  //T <: Comparable[T]表明了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)

  //RT的父类,TR的子类,

  //R角度看TR的下界,从T类型看,RT类型的上界

  //假设Tstudent类型,Person可以代替student,Person就是student的父类,

  //

}

object Type_Variables_Bounds{

  def main(args: Array[String]){

    val pair = new Pair("Spark","Hadoop")

    //结果为Spark

    println(pair.bigger)

  }

}

 

def hadoopFile[K, V, F <: InputFormat[K,V]]

  (path: String, minPartitions: Int)

  (implicit km: ClassTag[K],vm:ClassTag[V], fm: ClassTag[F]): RDD[(K,V)] = withScope {

  hadoopFile(path,

fm.runtimeClass.asInstanceOf[Class[F]],

km.runtimeClass.asInstanceOf[Class[K]],

vm.runtimeClass.asInstanceOf[Class[V]],

minPartitions)

}

//hadoopFile是读取hadoop文件的。

//K, V, F <: InputFormat[K,V]表明K, V, F都必须是InputFormat[K,V]类型的子类。

 

以上内容是从王家林老师DT大数据课程第43讲的学习笔记。
DT大数据微信公众账号:DT_Spark  

王家林老师QQ:1740415547 

王家林老师微信号:18610086859
scala43讲视频观看链接:
http://yun.baidu.com/s/1eQjga2I
我的百度网盘共享的DT大数据梦工厂王家林老师第1-85讲的视频内容:http://pan.baidu.com/s/1qWK9CMo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值