gpt4 book ai didi

scala - 是否可以获取运行时实例的 typeTag?

转载 作者:行者123 更新时间:2023-12-04 17:23:15 26 4
gpt4 key购买 nike

使用 Scala 2.10,我试图从字符串实例化一个类,我想获取它的类型标签。

例如 :

scala> def printClassName[Y: TypeTag](x: Y) = { println(typeTag[Y].tpe) }
printClassName: [Y](x: Y)(implicit evidence$1: reflect.runtime.universe.TypeTag[Y])Unit

这是工作:
scala> printClassName(new String())
String

但这不是:
scala> var foo = Class.forName("java.lang.String")
myInstance: Class[_] = class java.lang.String

scala> printClassName(foo)
java.lang.Class[?0]

有没有办法在运行时使用 scala 克服 java 删除?

最佳答案

我相信您可以使用 Scala Reflection api 来获取 Type (不是 TypeTag )。不确定这是否是您想要的,但它与 typeTag[Y].tpe 中打印的内容相同.

import scala.reflect.runtime.universe._
val m = runtimeMirror(getClass.getClassLoader)
val classSymbol = m.staticClass("java.lang.String")
val tpe = classSymbol.selfType

关于scala - 是否可以获取运行时实例的 typeTag?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16724588/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com