在运行时将类型参数作为字符串获取(Scala 2.11)

时间:2016-04-13 19:40:39

标签: scala

我一直在关注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
    }
}

1 个答案:

答案 0 :(得分:3)

向方法中添加隐式ClassTag[T]参数:

trait TheTrait[T] {
  def showClassNameOfT(implicit ct:ClassTag[T]) =
    println("class name of T is: " + ct.runtimeClass.getSimpleName)
}