关于序列化:什么是Java中的Serialversionuid?

What is Serial Version ID in Java?

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

Possible Duplicates:
Why should I bother about serialVersionUID?
what is a serial version id?

当我在Eclipse中创建了一个扩展java.util.logging.level的新类时,它要求我添加一个默认的或生成的序列版本ID。我只是盲目添加,不知道它是什么以及为什么要添加它。

有人能告诉我它是什么,为什么需要它吗?


序列化和反序列化对象时使用序列版本ID。Java识别如果要反序列化的字节与本地类版本匹配。否则,它将抛出异常。

这在执行RMI或持久化对象结构时很重要。

在serializable的javadoc中有一个非常好的关于序列化的描述。


它是用于序列化的类的唯一标识符。

如果要尽快序列化,最好声明它,因为如果不声明,那么在更改类时,将自动生成不同的类,并且序列化将停止工作。

这里有一个很好的参考:http://c2.com/ppr/wiki/javaidioms/alwaysdeclareserialversionuid.html