我試圖使用協變類型參數特徵的內部構造的情況下,類像這樣:爲什麼參數處於逆變位置?
trait MyTrait[+T] {
private case class MyClass(c: T)
}
編譯器說:
error: covariant type T occurs in contravariant position in type T of value c
然後我試過以下,但它也沒「T工作:
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是協變位置,在這裏,並提出一個解決這個問題? Thx!
你能解釋一下你真正想做什麼嗎?你爲什麼要T協變而不是不變? – 2012-03-08 15:40:42