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

2022-09-01 03:50:57

可能的重复:
我为什么要为串行VersionUID而烦恼?

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


答案 1

serialVersionUID是一个字段,用于定义特定类的版本 while &..考虑一个场景,其中你有一个类,它有3个字段,这些字段已经在生产中一段时间了(这意味着可能存在许多序列化版本的员工对象),当你更新类以包含(比如第4个字段)时,所有以前的类(被序列化)都不能被强制转换或反序列化到新的一个,你会得到一个例外。seriializingdeseriializingEmployee

为避免此问题,可以使用该字段来判断新类实际上是不同的版本(通过更改 )。serialVersionUIDJVMserialVersionUID

@Farmor & @Tom Jefferys几乎说了同样的事情,但是举个例子,事情看起来要简单得多。


答案 2

它用于序列化,它应该在任何实现 .Serializable

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

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