什么是java中的serialVersionUID,通常在异常类中?

amo*_*mod 25 java serialization serialversionuid

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

我正在经历一些异常处理代码,我看到了一些名为serialVersionUID的东西.这个uid用于什么?是否仅限于例外或可以在所有类中使用??? 这个id有什么好处???

Ana*_*rma 31

serialVersionUID是一个定义特定类的版本的字段,而seriializing&deseriializing..考虑一个场景,你有一个类Employee有3个字段已经生产了一段时间(意味着可能存在许多序列化版本的员工对象),当你更新要包含的类(比如说第4个字段),然后所有以前的类(序列化的)都不能被转换或反序列化为新类,你会得到一个例外.

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

@Farmor&@Tom Jefferys几乎说了同样的话,但举个例子看起来简单得多.

  • 您没有将其与“为什么它通常存在于异常类中”联系起来。你应该回答整个问题。 (2认同)

Tom*_*rys 6

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

它实际上是JVM可用于检查序列化类是否与您尝试将其反序列化的类定义匹配的版本号.

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