使用 DataSerializable 的 Hazelcast 3.5 序列化
Hazelcast 3.5 serialization with DataSerializable
我想序列化一个 Book 对象:
public class Book implements DataSerializable {
@Override
void writeData(ObjectDataOutput out) throws IOException {
...
}
@Override
void readData(ObjectDataInput in) throws IOException {
...
}
}
问题是我不知道如何将 ObjectDataOutput/ObjectDataInput 类型的对象实例化为 serialize/deserialize Book 对象。
ObjectDataOutputStream 实现了 ObjectDataOutput,但我不知道如何实例化这个对象,因为它需要没有 public 构造函数的 SerializationService 对象。
那么,有什么方法可以从 FileOutputStream/FileInputStream 创建一个 ObjectDataOutput/ObjectDataInput 对象吗?
提前致谢
感谢@pveentjer,我找到了答案。
FileOutputStream fos = new FileOutputStream(file);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
SerializationService serializationService = new DefaultSerializationServiceBuilder().build();
ObjectDataOutput odo = new ObjectDataOutputStream(bos, serializationService);
Book book = new Book();
book.writeData(odo);
bos.writeTo(fos);
我想序列化一个 Book 对象:
public class Book implements DataSerializable {
@Override
void writeData(ObjectDataOutput out) throws IOException {
...
}
@Override
void readData(ObjectDataInput in) throws IOException {
...
}
}
问题是我不知道如何将 ObjectDataOutput/ObjectDataInput 类型的对象实例化为 serialize/deserialize Book 对象。
ObjectDataOutputStream 实现了 ObjectDataOutput,但我不知道如何实例化这个对象,因为它需要没有 public 构造函数的 SerializationService 对象。
那么,有什么方法可以从 FileOutputStream/FileInputStream 创建一个 ObjectDataOutput/ObjectDataInput 对象吗?
提前致谢
感谢@pveentjer,我找到了答案。
FileOutputStream fos = new FileOutputStream(file);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
SerializationService serializationService = new DefaultSerializationServiceBuilder().build();
ObjectDataOutput odo = new ObjectDataOutputStream(bos, serializationService);
Book book = new Book();
book.writeData(odo);
bos.writeTo(fos);