谈谈J2SE中的序列化之接受默认序列化

豆豆网   技术应用频道   2006年04月01日    社区交流

本文详细介绍谈谈J2SE中的序列化之接受默认序列化

  当我们要人为的产生一个新的版本(实现并没有改动),而抛弃以前的版本的话,可以通过显式的声名UID来实现:

  private static final long serialVersionUID=????;

  你可以编造一个版本号,但注意不要重复。这样在反序列化的时候老版本将得到InvalidClassException,我们可以在老版本的地方捕捉这个异常,并提示用户升级的新的版本。

  当改动不大时,保持兼容性(向下兼容性的一个特例):

  有时候你的类增加了一些无关紧要的非私有方法,而逻辑字段并不改变的时候,你当然希望老版本和新版本保持兼容性,方法同样是通过显式的声名UID来实现。下面我们验证一下。

  老版本:

  import java.io.*;
public class Serial implements Serializable {
 int company_id;
 String company_addr;
 public Serial1(int company_id, String company_addr) {
  this.company_id = company_id;
  this.company_addr = company_addr;
 }
 public String toString() {
  return "DATA: "+company_id+" "+
  company_addr;
 }
}

  新版本

  import java.io.*;
public class Serial implements Serializable {
 int company_id;
 String company_addr;
 public Serial1(int company_id, String company_addr) {
  this.company_id = company_id;
  this.company_addr = company_addr;
 }
 public String toString() {
  return "DATA: "+company_id+" "+ company_addr;
 }
 public void todo(){}//无关紧要的方法
}

责编:豆豆技术应用

正在加载评论...