ich folgendescala Eingabe erfordern implizite
ich ein Elternteil generische Klasse
abstract class ResultProvider[+T: Writes](db: DB) {
def get(id: Long): Future[Seq[T]]
}
Und einige Implementierungen haben zu bauen bin versucht, z.B.
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)
}
Ich habe folgende Konfiguration Karte:
val providers: Map[String, ((DB) => ResultProvider[???])] = Map(
"length" -> LengthProvider,
"width" -> WidthProvider,
...
)
Meine Frage ist, was soll ich anstelle von ??? setzen. Idealerweise sollte es so etwas wie T : Writes
sein, da es mich nur interessiert, dass dieser Typ Writes
implizit implementiert hat, da ich dazu Json.toJson
es gehe. Es kompiliert mit Any
, aber die Information, die die Klasse implizit Writes
implementiert, ist dann verloren. Oder sollte ich einen anderen Ansatz verwenden? Ich könnte wahrscheinlich eine Oberklasse für alle meine Ergebnisfallklassen erstellen (z. B. LengthResult
), aber ich möchte mit den implicits davonkommen.
versuchen 'T <: Schreibt –
@AlexanderArendar Das ist nicht das, was überhaupt gewollt ist. –