关于序列化:Java Serializable:serialVersionUID的重要性?

Java Serializable: Importance of serialVersionUID?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Why should I bother about serialVersionUID?

我正在使用一个实现了序列化的类。Eclipse给了我一个"无串行uid"的警告,但是这门课的写作和阅读都很好。我想知道具有uid的可序列化类的目的是什么?这只是一个好的练习,还是我的班级最终没有它就不能工作?可以是任何号码吗?


当使用不同的虚拟机或在不同的计算机上对同一类进行序列化和反序列化时,这一点很重要。uid用于检查您试图反序列化的类是否确实是您认为的类,因此,如果代码中的类有一个uid,而被序列化的类有另一个uid,则反序列化将失败。

没有uid的类将由jvm自动给出一个uid,但不能保证不同的jvm会将相同的uid提供给同一个类。

有关详细信息,请阅读可序列化接口的JavaDoc。

Can it be any number?

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