本文介绍了Scala:从ClassTag中检索类名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在写一个能够将 Any
类型参数转换为传递 ClassTag的对象的泛型方法如果可能的话,可以使用T]
类型。
def getTypedArg [T:ClassTag](any:Any) :选项[T] = {
任何匹配{
case t:T =>一些(t)
案件无效=>
logger.warn(sInvalid argument:$ invalid)
None
}
}
我希望 log message 更精确,如下所示:
case invalid => logger.warn(sInvalid argument:$ invalid of type $ className)
如何从 ClassTag [T]
中检索 className
?
另外,是否有一种根本不同的方法可以更好地服务我的用例?
解决方案添加此导入语句
import scala.reflect._
并将记录语句更改为,
logger.warn(sInvalid argument:$ invalid of type $ {classTag [T] .runtimeClass})
这取自
I'm writing a generic method that can convert Any
type argument to the an object of passed ClassTag[T]
type, if possible.
def getTypedArg[T: ClassTag](any: Any): Option[T] = {
any match {
case t: T => Some(t)
case invalid =>
logger.warn(s"Invalid argument: $invalid")
None
}
}
I want the log message to be more precise like this:
case invalid => logger.warn(s"Invalid argument: $invalid of type $className")
How can I retrieve className
from the ClassTag[T]
?
Alternatively, is there a fundamentally different approach that can serve my use-case better?
解决方案
Add this import statement
import scala.reflect._
and change the logging statement as,
logger.warn(s"Invalid argument: $invalid of type ${classTag[T].runtimeClass}")
This is taken from Scala classOf for type parameter
这篇关于Scala:从ClassTag中检索类名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!
10-19 20:36