総称型から本当の型を取得したい
これを参考に
なんというか、ほえー
package main.scala import java.lang.reflect.ParameterizedType trait G[T] { def getGenericClass: java.lang.Class[T] = { getClass().getGenericInterfaces()(0) .asInstanceOf[ParameterizedType] .getActualTypeArguments()(0) .asInstanceOf[java.lang.Class[T]] } } class A extends G[A] object Main { def main(args: Array[String]) = { val a = new A println(a.getGenericClass) } }
実行結果
class main.scala.A
これは大変なことやと思うよ