我想写这样的方法:斯卡拉:在方法中使用TypeTag
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)
^
此链接How to get ClassTag form TypeTag, or both at same time?不能说明我在做什么。它看起来像试图“过滤”某些类的一些信息。
[如何获得ClassTag表单TypeTag,或两者同时?](http://stackoverflow.com/questions/18729321/how-to-get-classtag-form-typetag-or-both-在同一时间) – Kolmar
我无法从你的建议中得到答案。 – Randomize