关于序列化:java中的serialVersionUID是什么,通常在异常类中?

What is serialVersionUID in java, normally in exception class?

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

Possible Duplicate:
Why should I bother about serialVersionUID?

我正在研究一些异常处理代码,我看到了名为serialversionuid的东西。这是用来干什么的??是否仅限于例外情况,或可用于所有类别????这个身份证有什么好处????


serialVersionUID是一个字段,用于定义特定类的版本,而seriializingdeseriializing则是一个字段。考虑一个场景,您有一个类Employee,它有3个已经生产一段时间的字段(意味着可能存在许多员工对象的序列化版本),当您更新该类以包含(例如第4个字段)时,之前的所有类(序列化的)都不能强制转换或反序列化为新的类&am你会得到一个例外。

为了避免这个问题,您可以使用serialVersionUID字段告诉JVM,新类实际上是不同的版本(通过更改serialVersionUID)。

@Farmor@Tom Jefferys说的差不多,但举个例子来说,事情看起来简单多了。


它用于序列化,应该在实现Serializable的任何类中声明。

它实际上是一个版本号,JVM可以用来检查序列化类是否与您试图将其反序列化到的类定义匹配。

这里有更多关于它的信息:http://download.oracle.com/javase/1,5.0/docs/api/java/io/serializable.html


这是为了确定它们是否具有可序列化和可反序列化的兼容性,如果它们具有相同的serialVersionUID,并且都实现Serializable,那么它们是兼容的。

它并不局限于异常,只有当您注意到Eclipse在实现正常的Java类时,如果它实现EDCOX1,0,那么Eclipse很容易在EDCOX1 1中插入EDCOX1。

编辑:更新后包含@spychos对Serializable接口的正确评论。