Java Serializable:serialVersionUID的重要性?

时间:2012-05-22 18:43:33

标签: java serialization

  

可能重复:
  Why should I bother about serialVersionUID?

我正在使用一个实现Serializable的类。 Eclipse给了我一个“No Serial UID”警告,但编写和阅读该类工作正常。我想知道具有UID的Serializable类的目的是什么?这只是一种好的做法,还是我的班级最终没有它会不会工作?它可以是任何数字吗?

1 个答案:

答案 0 :(得分:5)

使用不同的VM或在不同的计算机上对同一个类进行序列化和反序列化非常重要。 UID用于检查您尝试反序列化的类是否真的是您认为的类,因此如果您的代码中的类具有一个UID,并且序列化的类具有不同的类,则de - 序列化将失败。

JVM会自动给出一个没有UID的类,但不能保证不同的JVM会为同一个类提供相同的UID。

Read the javadoc of the Serializable interface for more details.

  

可以是任何数字吗?

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