我正在编写一个通用方法,它可以将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")
如何从 ClassTag[T]
中检索 className
?
或者,是否有一种根本不同的方法可以更好地服务于我的用例?
最佳答案
添加这条导入语句
import scala.reflect._
并将日志语句更改为,
logger.warn(s"Invalid argument: $invalid of type ${classTag[T].runtimeClass}")
关于Scala:从 ClassTag 中检索类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48576345/