在Java中正确实现可序列化接口(Serializable)

通常我们对一个bean的类进行可序列化实现时,一般都只继承了可序列化接口,而没有添加serialVersionUID属性,这样会引发后续的问题:

  1. 先写如上的代码,调用writeObject方法将这个对象序列化。
  2. 先别急着调用反序列化,为Bean类新增加一个属性b,编译类。
  3. 调用readObject方法进行反序列化,这时就会看到如下的提示:

    看到了吧,和serialVersionUID有关,在重新编码后,Bean类的serialVersionUID属性变了,因为编译器会重新生成一个serialVersionUID值,与原来的值不一致,再去反序列化原有的对象时就会出错。

    若我们一开始就为Bean添加一个serialVersionUID值,那不管如何修改Bean类反序列化都没有问题了,因此在对一个java bean实现序列化接口时,为其添加一个serialVersionUID值是非常有必要的(eclipse/myeclipse可以自己生成该值)。

posted on 2010-11-23 23:35  liangGe_sky  阅读(291)  评论(0编辑  收藏  举报