У меня есть некоторый код, как это:Как получить форму ClassTag TypeTag или оба одновременно?
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)
}
}
Последняя строка завершается с:
Нет ClassTag доступные для T
Я думал TypeTag
было больше информации, чем ClassTag
? Могу ли я получить ClassTag
от TypeTag
? Если нет, есть ли какой-то синтаксис, говорящий, что T
имеет две границы контекста - и TypeTag
, и ClassTag
? Или, как бы вы могли исправить этот код?
Я определенно предпочитаю ответ @ gourlaysama на этот. Спрашивать обоим является излишним, так как 'TypeTag' является фактически надмножеством класса ClassTag по крайней мере так, как я думаю об этом. Как поясняет ответ @ gourlaysama, ClassTag действительно является оберткой вокруг 'java.lang.Class', а из TypeTag вы можете получить соответствующий экземпляр класса. – tksfz
Для чего я полностью согласен, но OP сказал «или оба в одно и то же время», чего на самом деле легче достичь (избыточность notwistanding), как показывает мой ответ. –