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)
}
}