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

将泛型类型传递给scala中的泛型方法,scala,playframework,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 parame

我写了一个函数

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)

这里的问题是什么?

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)
  )
}

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)
  )
}

工作起来很有魅力。感谢像一种魅力。谢谢