Function 将类型信息传递给Scala中的函数

Function 将类型信息传递给Scala中的函数,function,scala,types,Function,Scala,Types,我有一些代码可以对json对象执行一些常见操作,即提取。因此,我想创建一个泛型函数,该函数接受类型参数,该参数是预期的类,代码如下所示: def getMessageType[T](json: JValue): Either[GenericError,T] = { try { Right(json.extract[T]) } catch { case e: MappingException => jsonToError(json) } } 问题是如何将T信息传

我有一些代码可以对json对象执行一些常见操作,即提取。因此,我想创建一个泛型函数,该函数接受类型参数,该参数是预期的类,代码如下所示:

def getMessageType[T](json: JValue): Either[GenericError,T] = {
  try {
    Right(json.extract[T])
  } catch {
    case e: MappingException => jsonToError(json)
  }
}
问题是如何将T信息传递给该函数?

如果您查看:您将看到它需要
清单
隐式:

def extract[A](json: JValue)
    (implicit formats: Formats, mf: Manifest[A]): A
这可以通过将“type”作为一个值来避免JVM类型擦除。为了你的 凯斯,我想你也应该这么做:

def getMessageType[T](json: JValue)
    (implicit f: Formats, mf: Manifest[T]): T =
{
    json.extract[T]
}
这:

  • 提供方法的隐式参数,调用方必须满足这些参数

  • 创建(那些相同的)隐式参数以将其传递给
    提取