对象的序列化

import java.io.Serializable;
import java.io.*;

class Data implements Serializable {
	private int i;

	Data(int x) {
		i = x;
	}

	public String toString() {
		return Integer.toString(i);
	}
}

public class Worm implements Serializable {
	private static int r() {
		return (int) (Math.random() * 10);
	}

	private Data[] datas = { new Data(r()), new Data(r()), new Data(r()) };

	private Worm next;
	private char c;

	Worm(int i, char x) {
		System.out.println("worm constructor:" + i);
		c = x;
		if (--i > 0) {
			next = new Worm(i, (char) (x + 1));
		}
	}

	Worm() {
		System.out.println("deault constructor");
	}

	public String toString() {
		String s = " ";
		for (int i = 0; i < datas.length; i++) {
			s += datas[i].toString();
		}
		if (next != null) {
			s += next.toString();
		}
		return s;
	}

	public static void main(String[] args) {
		Worm w = new Worm(6, 'a');
		System.out.println("w = " + w);
		try {
			ObjectOutputStream out = new ObjectOutputStream(
					new FileOutputStream("worm.out"));
			out.writeObject("Worm storage");
			out.writeObject(w);
			out.close(); // Also flushes output
			ObjectInputStream in = new ObjectInputStream(new FileInputStream(
					"worm.out"));
			String s = (String) in.readObject();
			Worm w2 = (Worm) in.readObject();
			System.out.println(s + ", w2 = " + w2);
		} catch (Exception e) {
			e.printStackTrace();
		}
		try {
			ByteArrayOutputStream bout = new ByteArrayOutputStream();
			ObjectOutputStream out = new ObjectOutputStream(bout);
			out.writeObject("Worm storage");
			out.writeObject(w);
			out.flush();
			ObjectInputStream in = new ObjectInputStream(
					new ByteArrayInputStream(bout.toByteArray()));
			String s = (String) in.readObject();
			Worm w3 = (Worm) in.readObject();
			System.out.println(s + ", w3 = " + w3);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

  

posted @ 2015-03-19 10:42  chuiyuan  阅读(163)  评论(0编辑  收藏  举报