我有这个代码一般将String转换为Dto,如果我使用Manifest和ClassTag,我可以使用方法 runtimeClass 来获取运行时类,但是TypeTag没有这个方法
class ObjectMapper[T] {
def readValue(x: String, t: Class[T]): T = ???
}
class Reader {
def read[W: Manifest](x: String): W = {
val mapper = new ObjectMapper[W]
mapper.readValue(x, implicitly[Manifest[W]].runtimeClass.asInstanceOf[Class[W]])
}
}
我可以知道为什么TypeTag没有方法runtimeClass
非常感谢提前
答案 0 :(得分:7)
假设TypeTag
来自scala.reflect.runtime.universe
,您可以像这样获得这个类:
def runtimeClass(tag: TypeTag) = tag.mirror.runtimeClass(tag.tpe)
它没有此方法,因为并非所有TypeTag
都来自运行时Universe。