java - 如何在Scala中使用JCache?我收到编译器类型错误 : found String required K

标签 java scala memcached

我正在学习Scala并尝试在 Scala 代码中使用 javax.cache 但找不到解决此问题的方法:

val cacheFactory = CacheManager.getInstance.getCacheFactory
val map = new HashMap
val cache = cacheFactory.createCache(map)

def rawSet(key:String, value:Array[Byte]) {
    cache.put(key, value)
}

编译器错误是:

error: type mismatch
found: String
required: K
in cache.put(key, value)

编辑:
正如丹尼尔所说,我应该在问题中提到我已经结束了应用程序引擎,因为这似乎非常相关。在这种情况下,解决方案是在 Java 中创建一个小类来执行此特定代码,并从 Scala 中调用它。

最佳答案

尝试:

val cache: Cache[_, AnyRef] = cacheFactory.getCache(new HashMap[String, AnyRef])

甚至缓存[_, _]。您可能必须使用类似这样的方法来放置值:

cache.asInstanceOf[HashMap[String,AnyRef]].put(key, value)

我很确定有一种方法可以在不使用 asInstanceOf 的情况下使用完整的存在语法 (Cache[T, AnyRef] forSome { type T }) ,但我不记得如何(或找到解释它的网站:)。

关于java - 如何在Scala中使用JCache?我收到编译器类型错误 : found String required K,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1657494/

相关文章:

java - 匹配字符串中最后一次出现的单词

java - 从java获取接口(interface)名称

java - Memcache 延迟时间太长?

java - 清除内存缓存 AppEngine 不起作用

java - 如何针对多个版本的依赖项运行单元测试

java - 导入图像问题

用于代数、数学的 Java/Scala 库

scala - 全局范围的游戏框架在哪里?它消失有什么好处?

scala - 如何在Scala类中初始化函数类型参数?

php - Memcached 存储用户账户