Hazelcast 3.5使用DataSerializable进行序列化

Sta*_*yuk 5 java serialization hazelcast

我想序列化一个Book对象:

public class Book implements DataSerializable {

    @Override
    void writeData(ObjectDataOutput out) throws IOException {
        ...
    }
    @Override
    void readData(ObjectDataInput in) throws IOException {
        ...
    }

}
Run Code Online (Sandbox Code Playgroud)

问题是我不知道如何实例化ObjectDataOutput/ObjectDataInput类型的对象来序列化/反序列化Book对象.

ObjectDataOutputStream实现了ObjectDataOutput,但我不知道如何实例化这个对象,因为它需要没有公共构造函数的SerializationService对象.

那么,有没有办法从FileOutputStream/FileInputStream创建一个ObjectDataOutput/ObjectDataInput对象?

提前致谢

Sta*_*yuk 2

感谢@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);
Run Code Online (Sandbox Code Playgroud)