在Java中正确实现可序列化接口(Serializable)
2010-11-23 23:35
561 查看
通常我们对一个bean的类进行可序列化实现时,一般都只继承了可序列化接口,而没有添加serialVersionUID属性,这样会引发后续的问题:
先写如上的代码,调用writeObject方法将这个对象序列化。
先别急着调用反序列化,为Bean类新增加一个属性b,编译类。
调用readObject方法进行反序列化,这时就会看到如下的提示:
看到了吧,和serialVersionUID有关,在重新编码后,Bean类的serialVersionUID属性变了,因为编译器会重新生成一个serialVersionUID值,与原来的值不一致,再去反序列化原有的对象时就会出错。
若我们一开始就为Bean添加一个serialVersionUID值,那不管如何修改Bean类反序列化都没有问题了,因此在对一个java bean实现序列化接口时,为其添加一个serialVersionUID值是非常有必要的(eclipse/myeclipse可以自己生成该值)。
先写如上的代码,调用writeObject方法将这个对象序列化。
先别急着调用反序列化,为Bean类新增加一个属性b,编译类。
调用readObject方法进行反序列化,这时就会看到如下的提示:
看到了吧,和serialVersionUID有关,在重新编码后,Bean类的serialVersionUID属性变了,因为编译器会重新生成一个serialVersionUID值,与原来的值不一致,再去反序列化原有的对象时就会出错。
若我们一开始就为Bean添加一个serialVersionUID值,那不管如何修改Bean类反序列化都没有问题了,因此在对一个java bean实现序列化接口时,为其添加一个serialVersionUID值是非常有必要的(eclipse/myeclipse可以自己生成该值)。
相关文章推荐
- java中实现序列化serializable接口的问题
- 什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用。
- Java中实现序列化的两种方式 Serializable 接口和 Externalizable接口
- 【Java面试题】45 什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用。
- Java中实现序列化的两种方式 Serializable 接口和 Externalizable接口
- 什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用
- 什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用
- Android 对象序列化 Java中实现Serializable序列化与Android特有的实现Parceable接口序列化操作
- java为什么只有实现了Serializable接口才可以序列化
- java基础问题---什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用。
- 什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用。
- 什么是java序列化,如何实现java序列化?或请解释Serializable接口的作用
- 面试题:Java中对象序列化接口(Serializable)的意义
- Java Serializable(序列化)的理解和总结、具体实现过程
- Android开发:使用序列化接口Parcelable、Serializable实现Activity间传递复杂数据类型参数
- JavaBean (实现 Serializable(可序列化) 接口的类) 里 serialVersionUID 的作用
- java使用serializable进行序列化与反序列化实现对象clone(克隆)
- 实现Serializable接口的可控制序列化实现
- 为什么java要实现接口Serializable
- 对象的序列化实现Serializable 接口和Externalizable接口