kotlin - 如何在 Kotlin 中创建 Guava CacheBuilder?
问题描述
在 Kotlin 中构建 Guava CacheBuilder 的正确方法是什么?
我正在根据一个示例使用 CacheLoader 和 Guava 制作一个简单的客户端缓存。这个例子:
LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder()
.maximumSize(1000)
.build(
new CacheLoader<Key, Graph>() {
public Graph load(Key key) {
return createExpensiveGraph(key);
}
});
由于包私有构造函数错误,以下 CacheLoader 翻译无法编译:
CacheLoader<Key, Graph>() {
fun load(key: Key): Graph {
return createExpensiveGraph(key)
}
}
解决方案
您可以使用 CacheLoader.from { key: Key? -> 价值 }。您需要键入注释 lambda 参数并使其可为空。
CacheBuilder.newBuilder()
.maximumSize(1000)
.build(
CacheLoader.from { key: Key? -> createExpensiveGraph(key) }
)
推荐阅读
- python - 想要从列表中选择一个随机项目并在不同的函数中重复使用该项目
- python - 参数验证失败:AWS Rekognition 中 Image.S3Object 中的未知参数
- javascript - 将 Promise 结果/值存储在变量中
- reactjs - 无法读取未定义的属性“地图”,但当我只是控制台记录它时它很好
- amazon-web-services - 如何仅通过 put_events 触发 AWS Cloudwatch 事件
- kubernetes - Lets Encrypt 使用 Certbot 在 kubernetes 中失败(尽管与 cert-manager 一起使用)
- php - 如何确保它检查输入中是否至少有 30 个字符?
- python - 嵌套的 try-except-finally 没有按预期工作
- apache-kafka - 如果 ISR 小于复制因子并且生产者 ack 设置为 all,生产者将等待多少个 ack?
- rpa - 使用 UI 路径等待上传活动完成的选项