我正在尝试用 Kryo 序列化一个类并通过 Apache Kafka 发送它。我正在序列化的对象有一个 byte[] 作为类中的一个字段。序列化对象工作正常,但是当我尝试使用 read 方法对其进行反序列化时遇到了麻烦。我总是得到一个数组越界异常:-2。
下面是我的数据对象类 pojo 和我的自定义序列化程序
public class Data {
int dataSize;
byte[] data;
}
public class DataSerializer extends Serializer<Data.class> {
public void write (Kryo kryo, Output output, Data object) {
output.writeInt(object.getDataSize());
output.writeBytes(object.getData());
}
public Data read (Kryo kryo, Input input, Class<Data> type) {
Data data = new Data();
data.setDataSize = input.readInt();
data.setData = input.readBytes(data.getDataSize());
return data;
}
}
关于 readBytes() 和 writeBytes() 用法的文档很少。我这样做正确吗?