1 JDK 定义的 Serializable 接口
在 java.io.Serializable 接口定义为:
public interface Serializable {
}
注意 java.io.Serializable 接口是一个空接口,里面没有任何方法。java.io.Serializable 接口的一
个例子如下所示:
public class Person implements Serializable {
private String name;
private int age;
//注意这里没有缺省构造
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String toString() {
return "name = " + name + ", age = " + age;
}
public static void main(String[] args) {
//序列化对象到文件
try (//创建一个 ObjectOutputStream 输出流
//写到二进制文件,因此 d:/object.txt 打开都是乱码
ObjectOutputStream oos = new ObjectOutputStream(
new FileOutputStream("d:/object.txt"))) {
//将对象序列化到文件
Person person = new Person("aaa", 23);
oos.writeObject(person);
} catch (Exception e) {
e.printStackTrace();
}
//然后从 d:/object.txt 文件里反序列化,直接产生新的对象
try{
ObjectInputStream ois = new ObjectInputStream(
new FileInputStream("d:/object.txt"));
//注意这个时候不是调用构造函数,而是直接从文件反序列化到内存里产生对象
Person newPerson = (Person) ois.readObject();
System.out.println(newPerson);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}