为简化我的方案, 我有一个Type对象是Some [String]或Some [Int]或None。 我能够获取Type对象并以某种方式将参数Type输入另一个对象吗?
例如
scala> import scala.reflect.runtime.universe._
import scala.reflect.runtime.universe._
scala> val tt = typeTag[Some[String]]
tt: reflect.runtime.universe.TypeTag[Some[String]] = TypeTag[scala.Some[String]]
scala> val tpe = tt.tpe
tpe: reflect.runtime.universe.Type = scala.Some[String]
所以有你的Type [String]。 如何将参数类型输出到Type对象中?
答案 0 :(得分:1)
与the linked answer一样,您可以使用TypeRef
提取器:
import reflect.runtime.universe._
val tpe = typeOf[Some[String]] // same as typeTag[Some[String]].tpe
// extract type parameters
val TypeRef(_,_, tps) = tpe
// tps has type List[Type]
val innerType = tps.head // <-- here is your type
// innerType: reflect.runtime.universe.Type = String