【发布时间】:2019-12-01 19:23:45
【问题描述】:
我正在使用番石榴 LoadingCache 来存储 Animal 类型的对象,其中键是动物名称。到目前为止一切顺利。
然后我使用get() 方法获取缓存对象并检索Animal 对象。之后,我添加了这样一行:animal.setColor("blue");
之后我意识到番石榴缓存中以前的颜色也被改变了。我知道在java中修改一个对象也会改变它的原始状态(类似于传递引用)。但是对于缓存,我认为这会在我的代码中引入一些奇怪的错误。如何获取副本而不担心某些代码是否正在更新刚刚从缓存中检索到的对象?
【问题讨论】: