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

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

 

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

     

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

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

猜你喜欢

转载自lianggeblog.iteye.com/blog/1697977