【发布时间】:2020-02-13 05:01:14
【问题描述】:
我正在尝试在 Scala 泛型中处理给定类型的内容,如下所示:
import scala.reflect.runtime.universe._
implicit private val tag: TypeTag[T] = typeTag[T]
private def getTypeString(implicit tag: TypeTag[T]): String = typeOf[T] match {
case t if t =:= typeOf[OvalTest] => "tests"
case t if t =:= typeOf[OvalObject]=> "objects"
case t if t =:= typeOf[OvalState]=> "states"
case t if t =:= typeOf[OvalVariable] => "variables"
}
我遇到了异常:
Exception in thread "main" java.lang.NullPointerException
at scala.reflect.api.TypeTags.typeOf(TypeTags.scala:357)
at scala.reflect.api.TypeTags.typeOf$(TypeTags.scala:357)
at scala.reflect.api.Universe.typeOf(Universe.scala:73)
at composer.OvalIndexer$ElementsIndexer.getTypeString(OvalIndexer.scala:142)
at composer.OvalIndexer$ElementsIndexer.<init>(OvalIndexer.scala:148)
at composer.OvalIndexer$.createIndex(OvalIndexer.scala:48)
at Main$.main(Main.scala:11)
at Main.main(Main.scala)
空指针发生在private val ovalType = getTypeString 行。
【问题讨论】:
标签: scala generics reflection