如何解决静态变量是否在序列化过程中序列化
serialVersionUID是序列化和反序列化过程使用的 静态变量,用于验证本地类与用于序列化对象的类兼容。它不仅是静态变量,而且不像其他静态变量那样必须序列化。
当一个类的对象第一次被序列化时,一个包含了类名和序列号UID的类描述符被写入流中。反序列化时,JVM将检查从流中读取的串行版本UID是否与本地类之一相同。如果不是,它们甚至不会尝试反序列化对象,因为它知道类是不兼容的。
解决方法
我偶然了解了Java序列化。我读过许多文档和书籍,其中静态变量和瞬态变量无法在Java中序列化。我们声明一个serialVersionUid如下。
private static final long serialVersionUID = 1L;
如果静态变量未序列化,那么在反序列化过程中我们经常会遇到异常。
java.io.InvalidClassException
其中从反序列化对象中提取serialVersionUID并将其与已加载类的serialVersionUID进行比较。
据我所知,我认为如果静态变量不能序列化。毫无例外。我可能仍在学习,所以可能是错的。
“无法序列化Java中的静态变量和瞬态变量”是一个神话。请纠正我,我对这个概念一团糟。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。