我正在使用 Scala 代码中的 Google Guava。当我尝试使用 Int 作为示例中的键类型时会出现问题:
CacheBuilder.newBuilder()
.maximumSize(2)
.expireAfterWrite(24, TimeUnit.HOURS)
.build(
new CacheLoader[Int, String] {
def load(path: Int): String = {
path + "hello"
}
}
)
看起来不错,但所创建对象的推断类型是LoadingCache[Int with AnyRef, String]:
val cache: LoadingCache[Int with AnyRef, String] = CacheBuilder.newBuilder()
.maximumSize(2)
.expireAfterWrite(24, TimeUnit.HOURS)
.build(
new CacheLoader[Int, String] {
def load(path: Int): String = {
path + "hello"
}
}
)
当我尝试获取本例中的元素时会发生错误:
cache.get(1)
Scala 编译器错误:
[ERROR] error: type mismatch;
[INFO] found : Int(1)
[INFO] required: Int
[INFO] cache.get(1)
[INFO] ^
有人可以指出为什么会出现这样的错误以及我做错了什么吗?
环境:
- 谷歌番石榴 15.0
- 斯卡拉 2.11.5