我正在学习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)
}
编译器错误是:
错误:类型不匹配
找到:字符串
要求:k
in cache.put(键,值)
编辑:
正如daniel所说,我应该在问题中提到,我对appengine过于关注,因为这似乎非常相关。在本例中,解决方案是在java中创建一个小类来执行此特定代码,并从scala调用它。
2条答案
按热度按时间sqxo8psd1#
问题似乎在于为
HashMap
. 我猜你想要的是:记住:scala不允许使用原始类型。
使用repl来查看scala推断出您的
cache
变量,或自己提供类型信息以查看其编译是否正常:roqulrg32#
尝试:
甚至
Cache[_, _]
. 您可能需要使用这样的方法来输入值:我很确定有一种方法可以不用
asInstanceOf
,使用完整的存在语法(Cache[T, AnyRef] forSome { type T }
),但我想不起来是怎么回事(也找不到解释它的网站:)。