我想提出一個案例類Bla
,它採用類型參數A
,它在運行時知道A
的類型(它將其存儲在其info
字段中)。TypeTag用於案例分類
我的嘗試如下例所示。問題是這個例子不能編譯。
case class Bla[A](){
val info=Run.paramInfo(this) // this does not compile
}
import scala.reflect.runtime.universe._
object Run extends App{
val x=Bla[Int]
def paramInfo[T](x:T)(implicit tag: TypeTag[T]): String = {
val targs = tag.tpe match { case TypeRef(_, _, args) => args }
val tinfo=s"type of $x has type arguments $targs"
println(tinfo)
tinfo
}
paramInfo(x)
}
然而,當我評論val info=Run.paramInfo(this)
然後該程序運行正常,並打印:
型血乳酸(的)有類型參數列表(INT)
有沒有一種方法,使這個例子下面編譯? (或以某種其他方式實現相同的目標,即案例類是自我意識到它的類型參數的類型?)
謝謝,這工作。 – jhegedus