如何从 TypeTag 中获取 ClassTag,或同时获取两者? [英] How to get ClassTag form TypeTag, or both at same time?

查看:36
本文介绍了如何从 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

我认为 TypeTagClassTag 提供的信息更多?我可以从 TypeTag 获取 ClassTag 吗?如果没有,是否有一些语法可以说明 T 有两个上下文边界——TypeTagClassTag?或者,您将如何修复此代码?

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆