WEB开发网
开发学院WEB开发Jsp 编写自己的writeObject()和readObject()方法实现对... 阅读

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

 2008-01-05 09:02:39 来源:WEB开发网   
核心提示:// : c12:SerialCtl.java// Controlling serialization by adding your own// writeObject() and readObject() methods.// From 'Thinking in Java, 3rd ed.' (c)
编写自己的writeObject()和readObject()方法实现对象的序列化


// : 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);
 }
} ///:~

Tags:编写 自己 writeObject

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接