我使用的是Hazelcast:地图
//当我这样做时:
map.put(gen.newId(), myObject);
myObject是一个非常复杂的对象,并且不实现Serializable。
我认为像下面这样的配置就足够了,不必实现可串行化:
<map name="myMap">
<in-memory-format>OBJECT</in-memory-format>
</map>
Hazelcast医生说:http://docs.hazelcast.org/docs/3.5/manual/html/entryprocessor.html"当它被存储为对象(object格式)时,条目处理器直接应用于对象。在这种情况下,不会执行序列化或反序列化"
谢谢你的建议。
不幸的是,无论内存中的格式如何,当调用map.put时,对象都将被反序列化。这是因为通常有备份,而且他们还需要接收副本。因此,在这种情况下,唯一的解决方法是使对象"可序列化"。您可以使用Java序列化,但也可以依赖Kryo之类的东西来处理复杂的对象图。
我认为您还可以使用更高效的榛子铸造特定解决方案。这是解决方案的比较表。Portable一直在为我工作,但对于大型对象来说,实现和维护起来很麻烦。DataSerializable是一个更简单的解决方案,看起来很像Android中的Parcelable。