以下のコードで。
私の予想では、それはまたはT
の型でなければならないので、への呼び出しはおそらくコンパイルされるべきではありません (?)。上限を使用した同様の実験では、予想されるタイプチェック エラーが発生します。B
A
lowerBound(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
}