Java1.1中实现了Serializable接口的对象都可被转换成一系列字节,并可完全恢复成原状。Java中的两个特性运用了对象序列化:远程调用方法(RMI),Java Beans
要序列化一个对象(其类已实现Serializable接口),需要创建一些OutputStream对象,将其封装到ObjectOutputStream对象中,调用writeObject()方法即可将序列化的对象发生到OutputStream中,比如文件、String、网络等。当要恢复对象时,只需将InputStream封装到ObjectInputStream对象中,调用readObject()方法即可,当然此时必须上溯造型到原始类型。
1. Serializable接口实例
package com.test;
import java.io.*;
class Data implements Serializable {
private int i;
Data(int x) { i = x; }
public String toString() {
return Integer.toString(i);
}
}
public class Serial implements Serializable {
//Generate random int
private static int r() {
return (int)(Math.random() * 10);
}
private Data[] d = {new Data(r()), new Data(r()), new Data(r())};
private Serial next;
private char c;
Serial(int i, char x) {
System.out.println(" Serial constructor: " + i);
c = x;
if (--i >0)
next = new Serial(i, (char)(x+1));
}
Serial() {
System.out.println("Default constructor");
}
public String toString() {
String s = ":" + c + "(";
for (int i = 0; i < d.length; i++) {
s += d[i].toString();
}
s += ")";
if (next != null)
s += next.toString();
return s;
}
public static void main(String[] args) {
Serial w = new Serial(6, 'e');
System.out.println("w = " + w);
try {
//write the serialized objects to file
ObjectOutputStream out = new ObjectOutputStream(
new FileOutputStream("serial.out"));
out.writeObject("Serial test");
out.w