scala 泛型 上界

scala的泛型本质上和java是一样的,只不过语法不一样。

它有以下几种用法:

上界,T<:B,表示T是B的子类

下界,T>:B,表示T是B的老爹

还有其他的像,viewBound,contextBound,回头补充

上界举例:选择女神

1、新建女神类

class MissRight(val name: String, val faceValue: Int) extends Comparable[MissRight] {//必须定义为val时,才被识别为类的属性
  //这地方入参不能是T,T必须是在源中的
  override def compareTo(o: MissRight): Int = {
    this.faceValue - o.faceValue
  }
}

2、新建UpperBoundDemo类,它有一个select女神的方法

class UpperBoundDemo[T <: Comparable[T]] {//构造方法要不要用,但是Comparable后面必须要加T
  def select(m1:T,m2:T): T ={
    if(m1.compareTo(m2)>0) m1 else  m2
  }
}

注意:Comparable[T]后面必须加一个T

3、新建main

object UpperBoundDemo {
  def main(args: Array[String]) {

    val u=new UpperBoundDemo[MissRight]
    val m1=new MissRight("biaozi",120)
    val m2=new MissRight("erdiao",999)
    val res=u.select(m1,m2)
    println(res.name)

  }
}

猜你喜欢

转载自my.oschina.net/windows20/blog/1795625