首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将泛型传递给隐式类

将泛型传递给隐式类
EN

Stack Overflow用户
提问于 2016-09-17 19:49:28
回答 1查看 115关注 0票数 0

我在Scala上很新手,我正在尝试将泛型类型传递到隐式类中,但我找不到方法。

下面是我的隐式类

代码语言:javascript
复制
object Utils{ 
  implicit class cacheUtils[T:ClassTag](cache:CacheApi){
    def getVal(key:String): T = cache.get(key).get
  }
}

以及我是如何调用

代码语言:javascript
复制
  import implicits.Utils.cacheUtils

  Test @Inject()(cache: CacheApi) extends Controller {

       val xxx: List[X] = cache.getVal(xx.asString) 
  }

但显然,他需要的是T类型,而不是List[X]类型

你知道怎么做到这一点吗?

致以问候。

EN

回答 1

Stack Overflow用户

发布于 2016-09-17 21:04:32

看起来你的代码中有两个问题。

  1. CacheApi应该是具有T类型的参数,这意味着它应该看起来像这样:class CacheApi[T](...),并且您的cacheUtils类参数应该是cache: CacheApi[T]而不是cache: CacheApi
  2. 不那么重要,但上下文绑定在这里似乎是多余的。

编辑

根据OP的请求,下面是一个完整的示例:

代码语言:javascript
复制
class CacheApi[T](list: List[T]) {
  def get = list.head
}

object Utils {
  implicit class cacheUtils[T](cache: CacheApi[T]) {
    def getVal(key: String): T = cache.get
  }
}

import Utils._

val cacheStrings = new CacheApi(List("hello"))
val cacheLists = new CacheApi(List(List(42)))

val s: String = cacheStrings.getVal("")
val list: List[Int] = cacheLists.getVal("")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39546480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档