Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用无加载函数的guava缓存_Java_Caching_Guava - Fatal编程技术网

Java 使用无加载函数的guava缓存

Java 使用无加载函数的guava缓存,java,caching,guava,Java,Caching,Guava,我的java应用程序有一个缓存,我想换掉当前的缓存实现,用guava缓存替换它 不幸的是,我的应用程序的缓存使用似乎与guava的缓存工作方式不匹配。我想要的只是能够创建一个空缓存,使用“get”方法从缓存中读取一个项,并使用“put”方法将一个项存储在缓存中。我不希望“get”调用试图将项目添加到缓存中 似乎LoadingCache类具有我需要的get和put方法。但是我很难弄清楚如何在不提供“加载”功能的情况下创建缓存 我的第一次尝试是: LoadingCache<String, St

我的java应用程序有一个缓存,我想换掉当前的缓存实现,用guava缓存替换它

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

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

我的第一次尝试是:

LoadingCache<String, String> CACHE = CacheBuilder.newBuilder().build();
LoadingCache CACHE=CacheBuilder.newBuilder().build();
但这会导致编译器错误:不兼容的类型;不存在变量K1,V1类型的实例,因此缓存符合LoadingCache

显然,我必须传入一个具有“load”方法的CacheLoader

(我想我可以创建一个CacheLoader,它有一个“load”方法,只抛出一个异常,但这似乎有点奇怪和低效。这样做对吗?

返回一个未加载的缓存。正是你想要的。只用

Cache<String, String> cache = CacheBuilder.newBuilder().build();
Cache Cache=CacheBuilder.newBuilder().build();

我很想说(从您发布的信息来看),它听起来不像是一个缓存,而不仅仅是一个地图。@Sean Parsons:IMHO缓存和地图之间更重要的区别是前者可能随时忘记事情。加载是一个额外的特性。我更想说明它是否是缓存。对我来说,它显示了编译时错误。它无法从转换为泛型。我正在为android使用这个库。@CreativeManix您必须使用Cache类,而不是LoadingCache。谢谢@Zai,我得到了它。希望谷歌能在文档中解释这一点-他们给出的唯一示例是LoadingCache。(编辑了前面的评论)。然后可以使用.getIfPresent(对象键)检索内容,而不提供加载程序。