-
静态long类型常量serialVersionUID的作用
- 需要序列化的类需要实现Serializable接口,该接口没有任何方法,只是标示该类对象可被序列化。
- 序列化过程:使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态)
- 反序列化过程:使用一个输入流(如:FileInputStream)来构造一个ObjectInputStream(对象流)对象,接着,使用ObjectInputStream对象的readObject(Object obj)方法就可以将参数为obj的对象读出(即获取其状态)
- 如果没有设置这个值,你在序列化一个对象之后,改动了该类的字段或者方法名之类的,那如果你再反序列化想取出之前的那个对象时就可能会抛出异常,因为你改动了类中间的信息,serialVersionUID是根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段,当修改后的类去反序列化的时候发现该类的serialVersionUID值和之前保存在问价中的serialVersionUID值不一致,所以就会抛出异常。
- 而显示的设置serialVersionUID值就可以保证版本的兼容性,如果你在类中写上了这个值,就算类变动了,它反序列化的时候也能和文件中的原值匹配上。而新增的值则会设置成null,删除的值则不会显示。
-
相关阅读:
5.Java 线程状态之 TIMED_WAITING
3.Java 线程状态之 BLOCKED
4.Java 线程状态之 WAITING
2.Java 线程状态之 RUNNABLE
1.关于Java的线程状态
js注入,canvas截图
node使用3
node使用2
node的使用1
学习进度报告
-
原文地址:https://www.cnblogs.com/zxf330301/p/5417607.html
Copyright © 2020-2023
润新知