我在Scala中遇到了一个问题我真的被困住了。我知道标题可能更混乱,所以让我尽可能简单地解释它。想象一下,我有一个叫Repo
的abstract class
。这个类描述了几个方法,其中大部分已经实现。类Repo
看起来是这样的:从实现中导入泛型类的隐式变量
abstract class Repo[T](name: String) {
implicit def collection(implicit db: DefaultDB): JSONCollection =
db.collection[JSONCollection](name)
def findOne(selector: JsObject)(implicit collection: JSONCollection): Future[Option[T]] = {
collection.find(selector).one[T]
}
...
}
基本实现这个类的应该是这样的:
import models.Models.Resume._
object ResumeRepo extends Repo[Resume]("resumes")
现在,如果我尝试编译此,它给了我一个错误,他说:“没有找到类型为Json的串行器。尝试实现这种类型的隐式Writes或Format。“这很奇怪,因为我在ResumeRepo
实现类中明确包含了隐含的Format
。为什么这个错误显示?
奇怪的是,该警告提到'T'代替解析为在编译时这种类型的参数的类型。 – cchantep
那么..你说你明确拥有'Format'或'Writes'的实现在哪里? –
@ m-z它在简历模型中定义。 Resume模型只是一个案例类,格式只是基于案例类。我需要包含它吗? – Martijn