38

我的 java 应用程序有一个缓存,我想换出当前的缓存实现并用番石榴缓存替换它。

不幸的是,我的应用程序的缓存使用似乎与番石榴缓存的工作方式不匹配。我想要的只是能够创建一个空缓存,使用“get”方法从缓存中读取一个项目,并使用“put”方法将一个项目存储在缓存中。我不希望“get”调用尝试将项目添加到缓存中。

LoadingCache 类似乎有我需要的 get 和 put 方法。但是我无法弄清楚如何在不提供“加载”功能的情况下创建缓存。

我的第一次尝试是这样的:

LoadingCache<String, String> CACHE = CacheBuilder.newBuilder().build();

但这会导致此编译器错误:不兼容的类型;不存在类型变量 K1,V1 的实例,因此 Cache 符合 LoadingCache

显然我必须传入一个具有“加载”方法的 CacheLoader。

(我想我可以创建一个 CacheLoader,它有一个“加载”方法,只是抛出一个异常,但这似乎有点奇怪和低效。这是正确的做法吗?)

4

1 回答 1

50

CacheBuilder.build()返回一个非加载缓存。正是你想要的。只需使用

Cache<String, String> cache = CacheBuilder.newBuilder().build();
于 2012-11-23T16:55:09.877 回答