1 泛型
[T <: UpperBound]
[T >: LowerBound]
[T <% ViewBound]
[T : ContextBound]
[+T]
[-T]
1.1 案例1
package cn.tzb.implict
class Pair[T <: Comparable[T]] {
def bigger(first: T, second: T) = {
if (first.compareTo(second) > 0) first else second
}
}
object Pair {
def main(args: Array[String]): Unit = {
val p = new Pair[Integer]
println(p.bigger(1, 2))
}
}
1.2 案例2
Boy.scala
package cn.tzb.implict
class Boy(val name:String,var faceValue:Int) extends Comparable[Boy]{
override def compareTo(o: Boy): Int = {
this.faceValue - o.faceValue
}
}
TestBoy
package cn.tzb.implict
object TestBoy {
def main(args: Array[String]): Unit = {
val b1 = new Boy("Mike", 99)
val b2 = new Boy("John", 66)
val arr = Array[Boy](b1, b2)
var sorted = arr.sortBy(x => x).reverse
for (b <- sorted) {
println(b.name)
}
}
}
Mike
John
Process finished with exit code 0