对象序列化流的问题

对象序列化流的三个问题,如下

1、用对象序列化流,序列化了一个对象后,假如我们修改了对象所属的类文件,读取数据会不会出问题呢? a_12_2Student实现了Serializable接口,则a_12_2Student会有一个序列化id。 序列化运行时与每个可序列化的类关联一个版本号,称为serialVersionUID。

serialVersionUID:在反序列化期间使用该版本号来验证序列化对象的发送方和接收方是否已加载与该序列化兼容的该对象的类。 如果接收者已经为具有与相应发送者类别不同的serialVersionUID的对象加载了类,则反序列化将导致InvalidClassException异常。

2、如果出问题了如何解决呢 解决:序列化类必须声明显式serialVersionUID值,即在学生类里面加上右边这一行private static final long serialVersionUID = 42L。 注意:右边的42L是可以修改的,不一定非要42L

3、如果一个对象中的某个成员变量的值不想被序列化,又该如何实现呢? 解决:给这个age成员变量加上一个关键字transient来修饰

 

对象序列化流问题的练习