- [T <: Comparable[T]] 上界 upper bound java:
- [T >: Comparable[T]] 下界 lower bound java:
- [T <% Comparable] 视图界定 view bound 跟隐式转换有关的
- [T : Comparable] 上下文界定 context bound 跟隐式转换有关的
- [-T] 逆变 方法输入参数
- [+T] 协变 方法返回
package cn._51doit.scala.day05
class Pair[T <: Comparable[T]] {
def bigger(first: T, second: T): T = {
if(first.compareTo(second) >= 0) first else second
}
}
object Pair {
def main(args: Array[String]): Unit = {
//Scala的Int没有实现Comparable接口,但是为什么还可以比较呢?Ordering中有隐式转换
val p = new Pair[Int]
val r = p.bigger(5, 8)
println(r)
//java的Integer实现了Comparable接口
val p = new Pair[Integer]
val r = p.bigger(5, 8)
println(r)
}
}
class Pair[T <% Comparable[T]] {
def bigger(first: T, second: T): T = {
if(first.compareTo(second) >= 0) first else second
}
}
object Pair {
def main(args: Array[String]): Unit = {
val p = new Pair[Int]
val r = p.bigger(5, 8)
println(r)
}
}
class Pair[T <% Comparable[T]]
使用了视图界定,传入Scala的Int就可以了,应为视图界定会有隐式转换,将Int转成Integer