Я пытаюсь написать такой метод:
def foo[T:TypeTag](value: Int):String = {
(/* do something */).mapTo[T].map(_.toJson)
}
где mapTo
имеет подпись:
def mapTo[S](implicit tag: ClassTag[S]): Future[S] = { ... }
используя org.scala-lang.scala-reflect
, чтобы сделать что-то вроде:
foo[String](1)
, foo[List[Double]](10)
и так далее.
Пробовал писать по разному, но получались разные ошибки компиляции. Есть ли способ заставить что-то подобное работать?
Error:(26, 45) Cannot find JsonWriter or JsonFormat type class for T
(/* do something */).mapTo[T].map(_.toJson)
^
Error:(26, 45) not enough arguments for method toJson: (implicit writer: spray.json.JsonWriter[T])spray.json.JsValue.
Unspecified value parameter writer.
(/* do something */).mapTo[T].map(_.toJson)
^
Эта ссылка Как получить ClassTag из TypeTag или оба одновременно? не уточняет, что мне нужно. Похоже на попытку "отфильтровать" какую-то информацию о каком-то классе.