код Scala:Почему T в «K <: T» не может быть ковариацией?
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] = ""
^
Тип на праве <:
не должно быть КОВАРИАНТНОЙ? И почему?
'T in" K <: T "не может быть ковариацией', доступной только в отрицательных положениях. – Freewind