クラス オブジェクトに含まれるマニフェスト型の型パラメーターを取得することは可能ですか。
私はそれを正しく説明していないかもしれないので、私が言いたいのは、このタイプを考えると.
Resultset[Band[Coldplay]]
タイプを持つクラスインスタンスを取得できるように、完全なタイプを表すマニフェストが必要です
Class[Resultset[Band[Coldplay]]]
私が得ることができるのは
Class[Resultset[_]]
クラス オブジェクトに含まれるマニフェスト型の型パラメーターを取得することは可能ですか。
私はそれを正しく説明していないかもしれないので、私が言いたいのは、このタイプを考えると.
Resultset[Band[Coldplay]]
タイプを持つクラスインスタンスを取得できるように、完全なタイプを表すマニフェストが必要です
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]]]