2

我刚开始使用 Oracle 的 Coherence 缓存并注意到这一点:如果我将 ConcurrentHashMap 对象放入缓存中,当我检索它时,我可以看到它已转换为普通的 HashMap。

我能做些什么来避免这种内部转换?

4

2 回答 2

2

Java 的 ConcurrentHashMap(或其他集合类型)的等价物可能不存在于另一个平台中,因此 Coherence 缓存仅将键值对列表保留在映射中。这就是你得到一个 HashMap 的原因。

更好的方法是基于 ConcurrentHashMap(在 Java 版本中)和您自己的序列化程序创建您自己的地图类。使用 PofWriter.writeMap 和 PofReader.readMap 方法,您可以安排返回一个 ConcurrentHashMap。如果您随后需要 .Net 版本,您可以让您的地图类使用在 .Net 中最适合的地图,并提供适当的自定义序列化程序。

于 2010-09-10T12:12:44.233 回答
0

我想到了。我从配置 xml 中删除了 <serializer> 条目。现在它工作正常。但是,我认为跨平台支持可能会受到影响(例如.net)。

于 2010-07-16T08:20:22.850 回答