総称型から本当の型を取得したい
これを参考に
なんというか、ほえー
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
これは大変なことやと思うよ