获取Scala类型的type参数

时间:2015-07-28 07:52:11

标签: scala

使用TypeTag我已经能够检索有关我的多态类型的类型信息。

scala> paramInfo(List(1,2)).tpe
res18: reflect.runtime.universe.Type = List[Int]

现在我想要检索Int.type,但显然我无法这样做。

scala> paramInfo(List(1,2)).tpe.typeParams
res19: List[reflect.runtime.universe.Symbol] = List()

我想做什么,如果是,我该怎么做?

2 个答案:

答案 0 :(得分:1)

你需要

paramInfo(List(1,2)).tpe match {
  case TypeRef(_, _, params) => params
}

答案 1 :(得分:0)

您只需更改paramInfo的签名即可:

def paramInfo[T](x: List[T])(implicit tag: TypeTag[T]): TypeTag[T] = tag