加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读