如何创建新的ForwardingCache?

时间:2012-02-07 09:17:35

标签: java guava

我不能为我的生活弄清楚如何创建一个新的ForwardingCache。我可以看到我应该如何创建一个缓存而不是一个ForwardingCache。我错过了什么(明显的课程)?

编辑:我忘了添加我需要这个转发,所以我的听众可以通过缓存放置通知。如果有更好的方法来执行投放后的操作,请发表评论/回答。

2 个答案:

答案 0 :(得分:1)

您缺少的是番石榴终端中Map和Cache的基本区别。因此,在番石榴缓存中,您要么提供一种计算值的方法,如果不存在,或者在预加载时执行操作。

请参阅此处http://code.google.com/p/guava-libraries/wiki/CachesExplained#Applicability

所以,我不认为你的投案会出现或者看不出是怎么出现的?

至于创建ForwadCache。如果你仍然可以看到/解释如何使用ForwadingCache,你基本上可以提供ForwardingCache.SimpleForwardingCache http://docs.guava-libraries.googlecode.com/git-history/v10.0.1/javadoc/index.html?com/google/common/cache/ForwardingCache.SimpleForwardingCache.html和覆盖委托方法的具体实现,当然在那里使用Eventbus。

但是再次回到原来的问题,你可以很好地看到removeListeners但缓存上没有addListener。

大声思考你可以在CacheLoader的情况下使用EventBus或者自己获取操作(当找不到值时你的计算逻辑)。

答案 1 :(得分:0)

与所有其他Guava Forwarding类一样,您可以扩展ForwardingCacheForwardingCache.SimpleForwardingCache,覆盖要拦截的方法。您希望使用哪两个选项取决于您是希望在构建时还是通过Cache方法提供后备delegate()实施。