非常感谢你,虽然有些点还不是很明白,但是你已经解决了大部分吧的疑惑了作者: 潘天功 时间: 2012-11-24 12:16
1、对象序列化就是把一个对象变为二进制的数据流的一种方法。通过对象序列化可以方便地实现对象的传输或存储。
如果一个类的对象想被序列化,则对象所在的类必须实现java.io.Serializable接口,此接口定义如下:
public interface Serializable{}
例如:
import java.io.Serializable;
public class Person implements Serializable{ //此类的对象可以被序列化
private String name; //声明name属性
private int age; //声明age属性
public Person(String name, int age){ //通过构造方法设置属性内容
this.name = name;
this.age = age;
}
public String toString(){ //覆写toString()方法
return "姓名:"+this.name+";年龄:"+this.age;
}
}
以上的Person类已经实现了序列化接口。
(2)public static final long serialVersionUID=42L这反映了对象序列化和对象反序列化操作时的版本兼容性问题:
在对象进行序列化或反序列化时,要考虑JDK版本的问题,如果版本不一致会造成异常,所以在序列化操作中引入了一个serialVersionUID的常量。当实现java.io.Serializable接口的实体没有显示地定义一个名为serialVersionUID、类型为long的变量时java在编译时会自动生成serialVersionUID,也可以直接显示地定义一个名为serialVersionUID、类型为long的变量、只要不修改这个变量值的序列化实体皆可以。
在上面代码中直接在Person中加入以下常量即可:
public static final long serialVersionUID=42L;
serialVersionUID的具体内容由用户指定。