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

本文通过实战案例介绍了Scala中类型变量界限的概念,包括上界和下界的使用,并展示了这些概念如何应用于Spark中以限定泛型参数,确保类型安全。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值