java – 从文件中加载旧版本的对象
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 从文件中加载旧版本的对象,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2037字,纯文字阅读大概需要3分钟。
内容图文
![java – 从文件中加载旧版本的对象](/upload/InfoBanner/zyjiaocheng/778/6e2e09ba874d45319ae4d4ddb23a5031.jpg)
如果我尝试从文件加载旧版本的对象会发生什么?
例如,如果我创建了一个对象,则使用FileOutputStream将该对象保存到文件中.然后,如果我添加了一个字段,并尝试重新加载此对象,Java将根本不识别该对象,还是将该字段设置为默认字段或……?
谢谢 :)
解决方法:
当您尝试使用不同的类版本反序列化您的类时,您应该收到InvalidClassException.从javadocs:
The serialization runtime associates with each serializable class a
version number, called a serialVersionUID, which is used during
deserialization to verify that the sender and receiver of a serialized
object have loaded classes for that object that are compatible with
respect to serialization. If the receiver has loaded a class for the
object that has a different serialVersionUID than that of the
corresponding sender’s class, then deserialization will result in an
InvalidClassException. A serializable class can declare its own
serialVersionUID explicitly by declaring a field named
“serialVersionUID” that must be static, final, and of type long:ANY-ACCESS-MODIFIER static final long serialVersionUID = 42L; If a
serializable class does not explicitly declare a serialVersionUID,
then the serialization runtime will calculate a default
serialVersionUID value for that class based on various aspects of the
class, as described in the Java(TM) Object Serialization
Specification. However, it is strongly recommended that all
serializable classes explicitly declare serialVersionUID values, since
the default serialVersionUID computation is highly sensitive to class
details that may vary depending on compiler implementations, and can
thus result in unexpected InvalidClassExceptions during
deserialization. Therefore, to guarantee a consistent serialVersionUID
value across different java compiler implementations, a serializable
class must declare an explicit serialVersionUID value. It is also
strongly advised that explicit serialVersionUID declarations use the
private modifier where possible, since such declarations apply only to
the immediately declaring class–serialVersionUID fields are not
useful as inherited members.
内容总结
以上是互联网集市为您收集整理的java – 从文件中加载旧版本的对象全部内容,希望文章能够帮你解决java – 从文件中加载旧版本的对象所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。