我正在编写泛型方法,如果可能的话,可以将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]
?
或者,是否有一种根本不同的方法可以更好地为我的用例服务?
答案 0 :(得分:2)
添加此导入语句
import scala.reflect._
并将日志记录语句更改为
logger.warn(s"Invalid argument: $invalid of type ${classTag[T].runtimeClass}")