首页 > 解决方案 > 如何在 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)
         }
       }

标签: kotlinguava

解决方案


您可以使用 CacheLoader.from { key: Key? -> 价值 }。您需要键入注释 lambda 参数并使其可为空。

CacheBuilder.newBuilder()
        .maximumSize(1000)
        .build(
            CacheLoader.from { key: Key? -> createExpensiveGraph(key) }
        )

推荐阅读