我正在尝试建立以下
我有一个父泛型类
abstract class ResultProvider[+T: Writes](db: DB) {
def get(id: Long): Future[Seq[T]]
}
还有一些实现,例如
class LengthProvider(db: DB) extends ResultProvider[LengthResult](db){
override def get (userId: Long): Future[Seq[LengthResult]] = ...
}
object LengthProvider extends ((DB) => DisciplinePredictor) {
override def apply(db: DB) = new LengthProvider(db)
}
我有以下配置图:
val providers: Map[String, ((DB) => ResultProvider[???])] = Map(
"length" -> LengthProvider,
"width" -> WidthProvider,
...
)
我的问题是我应该用什么代替???。理想情况下,它应该类似于T : Writes
,因为我只关心这种类型是否已Writes
隐式实现,正如我将要介绍的那样Json.toJson
。它将与 一起编译Any
,但是该类应该Writes
隐式实现的信息会丢失。还是我应该使用不同的方法?我可能可以为我的所有结果案例类(例如LengthResult
)创建一个超类,但我想摆脱隐含。