斯卡拉代码:
class Cat[T] {
def meow[K <: T] = ""
}
class Cat[-T] {
def meow[K <: T] = ""
}
它们可以被编译。
但是当T
是协方差时,下面的代码无法编译:
class Cat[+T] {
def meow[K <: T] = ""
}
编译器打印:
error: covariant type T occurs in contravariant position in type <: T of type K
def meow[K <: T] = ""
^
右边的类型<:
不能是协变的?为什么?