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

本文介绍了Scala中类型变量Bounds的概念,通过代码实战展示了如何限定泛型类Pair中的类型T,要求T必须实现Comparable接口。同时,文章还深入解析了这种界限在Spark中的实际应用,探讨了Class replaceFirst方法和Pair类型的边界限定。

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

内容:

1、Scala中的类型变量Bounds代码实战

2、泛型变量BoundsSpark中的应用

class Pair[T <: Comparable[T]](val first : T,val second : 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)
}
object Typy_Variables_Bounds {
  def main(args: Array[String]){
    val pair = new Pair("Spark", "Hadoop")
    println(pair.bigger)
  }
}

   上述代码中给泛型类Pair中的类型T一个限定,即类型为T的成员有一个方法为CompareTo,如注释掉的代码会报错,因为不知道firstsecond的具体类型,无法判定firstsecond是否有CompareTo,那么就需要对T有一个限定(对变量类型本身的限定)。具体限定为[T<:Comparable[T]],即T类型为Comparable的子类型(如:compareTo),比较的实现为函数bigger。Class replaceFirst[R:>T]说明R类型为T的父类,Pair[T:<ComparableTo[T]]说明T类型为ComparableTo[T]的下界。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值