我正在学习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/