Scala:从ClassTag中检索类名

时间:2018-02-02 05:40:39

标签: scala generics

我正在编写泛型方法,如果可能的话,可以将Any类型参数转换为传递ClassTag[T]类型的对象。

def getTypedArg[T: ClassTag](any: Any): Option[T] = {
      any match {
        case t: T => Some(t)
        case invalid =>
          logger.warn(s"Invalid argument: $invalid")
          None
      }
}

我希望日志消息更像精确,如下所示:

case invalid => logger.warn(s"Invalid argument: $invalid of type $className")

如何从className检索ClassTag[T]

或者,是否有一种根本不同的方法可以更好地为我的用例服务?

1 个答案:

答案 0 :(得分:2)

添加此导入语句

import scala.reflect._

并将日志记录语句更改为

logger.warn(s"Invalid argument: $invalid of type ${classTag[T].runtimeClass}")

这取自 Scala classOf for type parameter