我经常使用java序列化,这对于存储完整的对象层次结构非常有用。
尝试序列化SetMultimap时,我得到一个例外,说明AbstractMultimap.WrappedSet不可序列化。
番石榴用户如何解决此问题?
提前致谢,
答案 0 :(得分:7)
多图的元素的视图(例如从get
方法返回的集合,asMap
视图等)是故意不可序列化的。但是,由于这种情况,SetMultimap
实现不可序列化是不正确的。 Guava提供的SetMultimap
的所有实现实际上都是可序列化的...它只是它们的部分视图集合而不是。
如果您需要序列化其中一个集合,则应将其明确复制到普通集合中:
Set<Foo> foo = Sets.newHashSet(multimap.get(someKey));
答案 1 :(得分:0)
修改因此,查看AbstractMultimap
的来源,返回的Map
为AsMap
或SortedAsMap
,两者都不是序列化。我建议您创建一个新的HashMap
并使用传递putAll
结果的Multimap.asMap()
方法。 HashMap
可序列化。
HashMap myMap = new HashMap();
myMap.putAll(myMultimap.asMap());