我正在尝试让kryo序列化一个自定义类,该类本身包含一些自定义对象,更具体地说是自定义对象的HashMap。我想知道处理这种事情的正确方法。以下是我要序列化的类(数据),嵌套的类以及当前的kryo实现。这是正确的做法吗?
public class Data {
int id,
int name,
ItemList items;
}
public Class ItemList {
HashMap<String, Item> items;
}
public Class Item {
String itemId;
String itemName;
String itemDesc;
}
kryo.register(Data.class, new Serializer<Data>() {
public void write (Kryo kryo, Output output, Data object) {
output.writeInt(object.id);
output.writeInt(object.name);
kryo.writeClassAndObject(output, items);
}
public Tile read (Kryo kryo, Input input, Class<Data> type) {
Data data = new Data();
kryo.reference(data);
data.id = input.readInt();
data.name = input.readString();
data.items = kryo.readClassAndObject(input);
return data;
}
});
最佳答案
您可以使用MapSerializer类。喜欢:
MapSerializer serializer = new MapSerializer();
kryo.register(HashMap.class, serializer);
kryo.register(LinkedHashMap.class, serializer);
serializer.setKeyClass(String.class, kryo.getSerializer(String.class));
serializer.setKeysCanBeNull(false);
serializer.setKeyClass(String.class, kryo.getSerializer(String.class));
更多,您可以在这里http://kryo.googlecode.com/svn-history/r416/trunk/test/com/esotericsoftware/kryo/MapSerializerTest.java
关于java - 带有自定义类的嵌套HashMap的Kryo序列化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28157236/