在下面的代码上。
我的期望是它T
必须是B
or类型A
,所以调用 tolowerBound(new D)
可能不应该编译(?)。与上限类似的实验给了我预期的类型检查错误。
感谢您提供提示。
object varianceCheck {
class A {
override def toString = this.getClass.getCanonicalName
}
class B extends A
class C extends B
class D extends C
def lowerBound[T >: B](param: T) = { param }
println(lowerBound(new D)) //> varianceCheck.D
}