我创建了一个具有以下签名和方法的特征(详细信息省略):
trait Cachable[A <: java.io.Serializable] {
def push(key: String, value: A) = ???
def pull(key: String): A = ???
}
以下代码无法编译( Document
类实现 java.io.Serializable
,并且 List 实现 scala.Serializable
,它扩展了 java.io.Serializable
):
class DocsService extends Cachable[List[Document]] {
...
}
错误消息如下所示:Cachable[List[Document]] 不符合类型 Cachable[A <: java.io.Serialized]。
如果我正确理解了这个问题,编译器意味着 Cachable[scala.Serializable]
不是 Cachable[java.io.Serializable]
的子类型.
我想,<:
语句类似于java的? extends
语句,这将解决 Java 中的此类问题。
如何在 Scala 中修复它?
最佳答案
List
在2.11.0-M3之前没有扩展Serialized
关于scala - 如何在 Scala 中正确声明协变类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25078138/