在 Scala 中定义泛型类时,如何确保类型参数“A”必须是案例类?
class TypedCollection[A](name: String){}
语境:
我正在尝试定义一个通用的“TypedCollection”包装类来交互响应式mongo JSONCollection,就好像它是一个案例类的集合(类似于关系数据库的Typesafe Slick)。
'A' 必须是一个案例类的原因是它会自动被赋予一个 'unapply' 方法。在创建类型“A”到 JsObject 或 BSONObject 的隐式转换时,在泛型类中使用此方法,以便可以将其存储在 MongoDB 中。IE
implicit val AWrites = Json.writes[A]
implicit val AReads = Json.reads[A]