Java可序列化:serialVersionUID的重要性?

可能重复:
为什么我应该打扰serialVersionUID?

我正在使用一个实现了Serializable的类。 Eclipse给了我一个“无串行UID”的警告,但是写和读这个类的效果很好。 我想知道具有UID的Serializable类的目的是什么? 这只是一种好的做法,否则我的班最终会不工作? 它可以是任何数字?


使用不同的VM或不同的机器序列化和反序列化同一个类时非常重要。 UID用于检查你想要反序列化的类是否真的是你认为它的类,所以如果你的代码中的类有一个UID,并且序列化的类有不同的类,那么de序列化将失败。

没有UID的类将由JVM自动提供,但不能保证不同的JVM将同一个UID赋予同一个类。

阅读Serializable接口的javadoc以获取更多细节。

它可以是任何数字?

理想情况下,它应该是您的类的特定版本(如哈希)的唯一号码,如果您对影响序列化字段(非transient )的类进行了更改,则UID需要更改。 我认为Eclipse可以为您自动生成一个UID。

链接地址: http://www.djcxy.com/p/23837.html

上一篇: Java Serializable: Importance of serialVersionUID?

下一篇: What is a serial version UID used for?