Scala:从 ClassTag 中检索类名

标签 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")

如何从 ClassTag[T] 中检索 className

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

最佳答案

添加这条导入语句

import scala.reflect._

并将日志语句更改为,

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

这是取自 Scala classOf for type parameter

关于Scala:从 ClassTag 中检索类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48576345/

相关文章:

scala - 让 Maven 和 SBT 使用本地 Artifactory-server

scala - 对多个值进行分组

angularjs - 使用 AngularJs 处理 Play scala 发送的分块数据

java - 带有 Comparator<?> 参数的 TreeSet 构造函数

scala - 如何使用可变参数定义和调用部分应用的函数?

scala - 编译表定义时出现错误 : could not find implicit value for parameter tm

C# 用 LINQ 用相同的模式替换 List<string> 的所有元素

c# - 具有不同类的通用列表 XML 序列化

Java Compiler 接受泛型方法引用,但在作为变量传递时不接受

java - 为什么我需要显式地进行通用调用?