私は以下を構築しようとしています
親ジェネリッククラスがあります
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