java对象序列化是否兼容1.5和1.6之间

20 java serialization

我想知道混合jdk 1.5和1.6(Java 6)对象序列化(biderctional通信)是否安全.我搜索了太阳关于这个问题的明确声明,但没有成功.因此,除了技术可行性之外,我正在寻找关于该问题的"官方"声明.

Tom*_*Tom 16

序列化机制本身并没有改变.对于个别课程,它将取决于具体的课程.如果类具有serialVersionUID字段,则应该指示序列化兼容性.

就像是:

private static final long serialVersionUID = 8683452581122892189L;
Run Code Online (Sandbox Code Playgroud)

如果不变,则序列化版本兼容.对于JDK类,这是有保证的,但当然总是可能在进行重大更改后忘记更新serialVersionUID.

当JDK类不能保证兼容时,这通常在Javadoc中提到.

警告:此类的序列化对象与以后的Swing版本不兼容


Gav*_*ell 2

在对使用 Java 1.5 程序中的 ObjectOutputStream 写入文件的序列化对象进行测试,然后在 Java 1.6 程序中使用 ObjectInputStream 运行读取之后,我可以说这没有任何问题。