番石榴的 Cache 类型通常用作a 计算 缓存。您通常不会手动为其添加值。相反,你告诉它如何加载昂贵的计算键值,给它一个 CacheLoader 包含必要的代码。
Cache
CacheLoader
典型的示例是从数据库加载值或进行昂贵的计算。
private final FooDatabase fooDatabase = ...; private final LoadingCache<Long, Foo> cache = CacheBuilder.newBuilder() .maximumSize(10) .build(new CacheLoader<Long, Foo>() { public Foo load(Long id) { return fooDatabase.getFoo(id); } }); public Foo getFoo(long id) { // never need to manually put a Foo in... will be loaded from DB if needed return cache.getUnchecked(id); }
另外,我尝试了你给出的例子 mycache.get("key123") 回 "value123" 正如所料。
mycache.get("key123")
"value123"