问题
序列化java对象中的终止字符/字节序列是什么(如果有的话)?
背景
我正在做一个小型的自学项目,我想序列化java对象并将它们写入一个流,在该流中读取然后反序列化。因为,我需要识别序列化对象之间的边界,并且无法确定当前对象不是最后一个对象,是否有一个始终存在的终止字符可以用作标识符?
我注意到有一个神奇的数字ACED可以让我识别对象的开始,那么我如何识别结束呢?
编辑: 如果没有终止字符,是否有任何安全终止字符/序列可供我使用(插入)来标识对象的结尾?
最佳答案
理论上你应该总是能够找到一个对象的末尾,但实际上你不能。我知道问题是自定义的 writeObject
实现不调用 defaultReadObject
或 readFields
具有非标准表示形式。
我过去玩过序列化。包括创建流,以便在我对 ObjectInputStream
执行不寻常的操作时使用。这并不令人愉快(!)。
您可以阅读 spec 中的详细信息,并且源代码值得一读。
关于java - 如何确定我处于序列化 Java 对象的最后一个字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/880457/