是否可以获取类对象中包含的清单类型的类型参数。
我可能没有正确描述,所以我的意思是,给定这种类型。
Resultset[Band[Coldplay]]
我想要一个代表完整类型的manfiest,这样就应该可以获得一个具有该类型的类实例
Class[Resultset[Band[Coldplay]]]
我能得到的只有
Class[Resultset[_]]
是否可以获取类对象中包含的清单类型的类型参数。
我可能没有正确描述,所以我的意思是,给定这种类型。
Resultset[Band[Coldplay]]
我想要一个代表完整类型的manfiest,这样就应该可以获得一个具有该类型的类实例
Class[Resultset[Band[Coldplay]]]
我能得到的只有
Class[Resultset[_]]
您可以将清单构建到一个类中:
case class Manifesting[A](value: A)(implicit val mf: Manifest[A]) { }
scala> Manifesting(5).mf.erasurescala> Manifesting(5).mf.erasure
res1: Class[_] = int
或者您可以将所有清单构建到一个方法中:
def nested[A, B[A]](x: B[A])(implicit ma: Manifest[A], mb: Manifest[B[A]]) =
(ma.erasure, mb.erasure)
scala> nested(List("fish"))
res2: (Class[_$1], Class[_$1]) forSome { type _$1; type _$1 } =
(class java.lang.String,class scala.collection.immutable.List)
或者,在 Scala 2.10 中,您可以使用TypeTag
:
def nest2[A: scala.reflect.runtime.universe.TypeTag](x: A) =
implicitly[scala.reflect.runtime.universe.TypeTag[A]]
scala> nest2(Right(List("salmon","herring")))
res3: reflect.runtime.universe.TypeTag[scala.util.Right[Nothing,List[String]]] =
TypeTag[scala.util.Right[Nothing,List[String]]]