Я пытаюсь использовать параметр ковариантного типа внутри признака для создания 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 здесь находится в ковариантном положении, и предложить решение этой проблемы? Спасибо!