5
スケーラのuniverse.typeOfは、クラスの型パラメータを保持するのに役立ちます。スカラーのタイプからParameterizedTypeを取得しますか?
import scala.reflect.runtime.universe._
case class X[T:TypeTag]() {
val t = typeOf[T] // e.g. Seq[Int] Holds type parameters
val clz:Class[_] = runtimeMirror(this.getClass.getClassLoader).runtimeClass(t.typeSymbol.asClass)
}
X[Seq[Int]]().t // Seq[Int]
X[Seq[Int]]().clz // Seq :-(
Javaのは、ParameterizedTypeは同じ未消去情報を保持しています。スカラー型をJava ParameterizedTypeに変換するにはどうすればよいですか?
import scala.reflect.runtime.universe._
case class X[T:TypeTag]() {
val clz:Class[_] = runtimeMirror(this.getClass.getClassLoader).runtimeClass(typeOf[T].typeSymbol.asClass)
}