如何从 TypeTag 中获取 ClassTag,或同时获取两者? [英] How to get ClassTag form TypeTag, or both at same time?
本文介绍了如何从 TypeTag 中获取 ClassTag,或同时获取两者?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一些这样的代码:
class ReflectiveJsonFormat[T:TypeTag] extends JsonFormat[T] {
def write(x: T) : JsValue = {
val t = typeOf[T]
val getters = t.declarations.filter { s => s.isMethod && s.asMethod.isGetter }
val mirror = runtimeMirror(this.getClass.getClassLoader)
val instanceMiror = mirror.reflect(x)
}
}
最后一行失败:
没有可用于 T 的 ClassTag
No ClassTag available for T
我认为 TypeTag
比 ClassTag
提供的信息更多?我可以从 TypeTag
获取 ClassTag
吗?如果没有,是否有一些语法可以说明 T
有两个上下文边界——TypeTag
和 ClassTag
?或者,您将如何修复此代码?
I thought TypeTag
was more info than a ClassTag
? Can I get the ClassTag
from the TypeTag
? If not, is there some syntax for saying that T
has two context bounds -- both TypeTag
and ClassTag
? Or, how would you otherwise fix this code?
推荐答案
如果这就是您所追求的,Scala 确实支持多个上下文边界:
Well scala does support multiple context bounds if that is what you are after:
class ReflectiveJsonFormat[T:TypeTag:ClassTag]
这篇关于如何从 TypeTag 中获取 ClassTag,或同时获取两者?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文