我正在尝试在trait内使用协变类型参数来构造一个类似于case-class的结构,代码如下:
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处于协变位置,并提供一个解决问题的方法吗?谢谢!