我试图理解实现泛型的错误。我有一个特征,其限定一个返回与结合该性状的上部类型的引用的方法。如何过一个变种参考性状的实现没有键入带有校验Expression of type Capability[Class] doesn't conform to expected type Capability[Trait]
代码如下:
trait IAITask {
def taskTypeReference[T >: IAITask]: Capability[T]
}
object Tasks {
var Walk: Capability[Walk] = _
}
class Walk extends IAITask {
override def taskTypeReference[T >: IAITask]: Capability[IAITask] = Tasks.Walk //This line does not type check
}
答案 0 :(得分:1)
如果它是Java接口,那么您可能想尝试通过通配符来模仿Java的使用站点差异:
trait Capability[A]
trait IAITask {
def taskTypeReference: Capability[_ <: IAITask]
}
object Tasks {
var Walk: Capability[Walk] = _
}
class Walk extends IAITask {
override def taskTypeReference: Capability[_ <: IAITask] = Tasks.Walk
}