将泛型类型传递给scala中的泛型方法

时间:2018-03-14 15:34:16

标签: scala playframework

我写了一个函数

def getOptional[A](key: String) : Option[A] = {
   redisClients.withClient(redisClient =>
      redisClient.get[A](key)
   )
}

我称之为

redis.getOptional[List[Long]](REDIS_PREFIX_PRODUCT_IDS)

但是会引发异常

could not find implicit value for parameter parse: com.redis.serialization.Parse[A][error] redisClient.get[A](key)

这里有什么问题?

1 个答案:

答案 0 :(得分:2)

get需要额外的隐式参数Parse[A]。如果没有Parse[A],那么它不清楚要解析的内容,因为类型A在运行时被删除。试试这个:

import com.redis.serialization.Parse
def getOptional[A: Parse](key: String) : Option[A] = {
  redisClients.withClient(redisClient =>
    redisClient.get[A](key)
  )
}