编写自己的writeObject()和readObject()方法实现对象的序列化

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

// : c12:SerialCtl.java

// Controlling serialization by adding your own

// writeObject() and readObject() methods.

// From 'Thinking in Java, 3rd ed.' (c) BrUCe Eckel 2002

// www.BruceEckel.com. See copyright notice in CopyRight.txt.

import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.io.Serializable;

public class SerialCtl implements Serializable {

PRivate String a;

private transient String b;

public SerialCtl(String aa, String bb) {

a = "Not Transient: " + aa;

b = "Transient: " + bb;

}

public String toString() {

return a + "\n" + b;

}

private void writeObject(ObjectOutputStream stream) throws IOException {

stream.defaultWriteObject();

stream.writeObject(b);

}

private void readObject(ObjectInputStream stream) throws IOException,

ClassNotFoundException {

stream.defaultReadObject();

b = (String) stream.readObject();

}

public static void main(String[] args) throws IOException,

ClassNotFoundException {

SerialCtl sc = new SerialCtl("Test1", "Test2");

System.out.println("Before:\n" + sc);

ByteArrayOutputStream buf = new ByteArrayOutputStream();

ObjectOutputStream o = new ObjectOutputStream(buf);

o.writeObject(sc);

// Now get it back:

ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(

buf.toByteArray()));

SerialCtl sc2 = (SerialCtl) in.readObject();

System.out.println("After:\n" + sc2);

}

} ///:~

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航