我的课程需要协变。这个类包含一个Map,这个map的键必须使用与我的类相同的T类型:
err
它不会编译,因为Map键类型参数是不变的。针对这种情况有解决方法吗?
谢谢:)
答案 0 :(得分:1)
定义像这样的U类,它正在工作:
class A
class B extends A
class Container[+T](val content: T) {
type U <: T
val map : Map[U,_] = Map.empty
}
val c1: Container[A] = new Container[B](new B)
或者:
class A
class B extends A
class Container[+T](val content: T) {
val map : Map[_<: T,_] = Map.empty
}
val c1: Container[A] = new Container[B](new B)