使用不同jvm版本对对象进行java序列化和反序列化



我有一个带有java8的远程系统,它通过网络发送和接收序列化的javadto来与另一个系统(希望是java17(交互。每个java类都有自己的serialVersionUID,但我不确定当较新的jvm尝试反序列化由明显较旧的jvm序列化的对象时是否会出现错误。还是应该向后兼容?

澄清一下,它是通过实现java.io.Serializable接口完成的二进制序列化。

Java版本不会影响任何内容。如果被序列化的类在两个系统之间没有不兼容的更改(在最好的情况下,它们是同一个类,但序列化也允许发生一些更改(,那么就没有任何兼容性问题。

只有当一方有不同的类版本并且它们不兼容时,您才需要执行手动操作(如实现Externalizable(。否则,序列化是向后兼容的,尽管它可能不是使用它的好理由(例如它非常特定于Java(还有其他原因。

最新更新