Я пытаюсь использовать параметр ковариантного типа внутри признака, чтобы построить класс case, например:
trait MyTrait[+T] {
private case class MyClass(c: T)
}
компилятор говорит:
error: covariant type T occurs in contravariant position in type T of value c
Затем я попробовал следующее, но он также не работал:
trait MyTrait[+T] {
private case class MyClass[U <: T](c: U)
}
ошибка на этот раз:
error: covariant type T occurs in contravariant position in type >: Nothing <: T of type U
Может ли кто-нибудь объяснить, почему T находится здесь в ковариантной позиции и предлагает решение этой проблемы? спасибо!