scala – 为什么TypeTag没有方法runtimeClass但Manifest和ClassT
发布时间:2020-12-16 09:58:08 所属栏目:安全 来源:网络整理
导读:我有这个代码一般将String转换为Dto,如果我使用Manifest和ClassTag,我可以使用方法runtimeClass来获取运行时类,但是TypeTag没有这个方法 class ObjectMapper[T] { def readValue(x: String,t: Class[T]): T = ???}class Reader { def read[W: Manifest](x: S
我有这个代码一般将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 提前谢谢了 解决方法
假设TypeTag来自scala.reflect.runtime.universe,你可以得到这样的类:
def runtimeClass(tag: TypeTag) = tag.mirror.runtimeClass(tag.tpe) 它没有此方法,因为并非所有TypeTag都来自运行时Universe. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |