【发布时间】:2016-05-10 19:25:26
【问题描述】:
在 Scala 中定义泛型类时,如何确保类型参数“A”必须是案例类?
class TypedCollection[A](name: String){}
上下文:
我正在尝试定义一个通用的“TypedCollection”包装类来与 reactivemongo JSONCollection 进行交互,就好像它是一个案例类的集合(类似于关系数据库的 Typesafe Slick)。
'A' 必须是一个案例类的原因是它会自动被赋予一个'unapply' 方法。在创建类型“A”到 JsObject 或 BSONObject 的隐式转换时,在泛型类中使用此方法,以便可以将其存储在 MongoDB 中。即
implicit val AWrites = Json.writes[A]
implicit val AReads = Json.reads[A]
【问题讨论】:
-
看不到目标...为什么不检查那里
A : OWrites,或A : OFormat(或A : BSONDocument{Reader,Writer})?
标签: scala reactivemongo play-reactivemongo scala-generics