如何在 Kotlin 中创建 Guava CacheBuilder?

How do you create a Guava CacheBuilder in Kotlin?

在 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) }
        )