微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

静态变量是否在序列化过程中序列化

如何解决静态变量是否在序列化过程中序列化

serialVersionUID是序列化和反序列化过程使用的 静态变量,用于验证本地类与用于序列化对象的类兼容。它不仅是静态变量,而且不像其他静态变量那样必须序列化。

一个类的对象第一次被序列化时,一个包含了类名和序列号UID的类描述符被写入流中。反序列化时,JVM将检查从流中读取的串行版本UID是否与本地类之一相同。如果不是,它们甚至不会尝试反序列化对象,因为它知道类是不兼容的。

解决方法

我偶然了解了Java序列化。我读过许多文档和书籍,其中静态变量和瞬态变量无法在Java中序列化。我们声明一个serialVersionUid如下。

private static final long serialVersionUID = 1L;

如果静态变量未序列化,那么在反序列化过程中我们经常会遇到异常。

java.io.InvalidClassException

其中从反序列化对象中提取serialVersionUID并将其与已加载类的serialVersionUID进行比较。

据我所知,我认为如果静态变量不能序列化。毫无例外。我可能仍在学习,所以可能是错的。

“无法序列化Java中的静态变量和瞬态变量”是一个神话。请纠正我,我对这个概念一团糟。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。