1

我直接使用 Kryo IO 对字符串、Longs 和 Doubles 进行我自己的低级原始序列化。

我想知道的是,Kryo IO 是否有办法在读回序列化字节时自动检测原始数据类型?

如果我有一个包含 10 个序列化值的字节数组,但我不知道它们是字符串、长整数还是双精度值;Kryo 有什么方法可以确定数据类型(如 MsgPack 可以)?

4

1 回答 1

2

Kryo在这方面与普通的 Java 序列化没有什么不同。反序列化器有两种方法可以知道它每次反序列化的类型:

  1. 它是已知类中的一个字段,因此反序列化器实现以正确的顺序读取每个字段。

  2. 流中以某种方式嵌入了类型信息以使其知道。中的writeClassAndObject()方法Kryo就是这样做的——它将一个紧凑的类标识符添加到实际的对象内容中,让反序列化器知道该做什么。

    或者,您可以手动执行类似的操作,例如通过发送一个字节,该字节将在有限数量的支持类型中进行选择。

此外,这也是MessagePack格式要求的......

于 2014-02-27T20:59:45.420 回答