我一直在关注TypeTag及其类似的文档,但未能解决这个问题。
有没有办法在运行时解释参数化类型T在下面的例子中,通过替换???有一些Scala魔术因此在运行时会打印出SomeClass'?
class SomeClass
trait TheTrait[T] {
def showClassNameOfT = println("class name of T is: " + ???)
}
object Foo extends TheTrait[SomeClass] {
def main(args: Array[String]): Unit = {
showClassNameOfT
}
}
答案 0 :(得分:3)
向方法中添加隐式ClassTag[T]
参数:
trait TheTrait[T] {
def showClassNameOfT(implicit ct:ClassTag[T]) =
println("class name of T is: " + ct.runtimeClass.getSimpleName)
}