Scala – 没有TypeTag可用异常当使用case类尝试获取TypeTag?
发布时间:2020-12-16 09:14:01 所属栏目:安全 来源:网络整理
导读:我正在看 scala反映API,我有很多例外. 文件参考: http://docs.scala-lang.org/overviews/reflection/environment-universes-mirrors.html 如何从通用类获取typetag? def getChildSettings[T: ru.TypeTag](path: String,settingsParameterObject: T) = { im
我正在看
scala反映API,我有很多例外.
文件参考: 如何从通用类获取typetag? def getChildSettings[T: ru.TypeTag](path: String,settingsParameterObject: T) = { import scala.reflect.runtime.{ currentMirror => m } val m = ru.runtimeMirror(getClass.getClassLoader) val classC = ru.typeOf[T].typeSymbol.asClass } 我得到一个例外: No TypeTag available for ParameterObject.type 即使一个非常简单的例子似乎不起作用(编辑是的,它在repl中) import scala.reflect.runtime.universe._ import scala.reflect.runtime.currentMirror import scala.reflect.runtime.{universe => ru} def getTypeTag[T: ru.TypeTag](obj: T) = ru.typeTag[T] case class ParameterObject(stringType: String,optionType: Option[String]) getTypeTag(ParameterObject) 我猜这是关于我如何调用该方法的东西. 解决方法
我终于找到了什么问题.
案例类必须定义在顶层 – 它们不能嵌套. 这样的事情会失败. class Foo { describe("getSettings") { case class ParameterObject(foo: String) settings.getTypeTag(path,ParameterObject) } } class Clazzy { def getTypeTag[T: TypeTag](obj: T) = ru.typeTag[T] } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |