Controlling Serialization By Adding Your Own WriteObject and ReadObject Methods

From Java Example Source Code

Jump to: navigation, search

Contents

[edit] Overview - Controlling Serialization By Adding Your Own WriteObject and ReadObject Methods

This Java example shows how to control serialization by adding you own writeObject and readObject Methods.

[edit] Java Source Code

  • Package: com.bruceeckel
  • File: SerialCtl.java
package com.bruceeckel;
 
//: 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);
    }
}

[edit] What Result You Can Get

Run the program, you will get:


Before:
Not Transient: Test1
Transient: Test2
After:
Not Transient: Test1
Transient: Test2

[edit] Required External Library for this Java Example

Need nothing.


[edit] How to Run this Java Example Program

We recommend running this Java example program with Eclipse.

For assistance in working with Eclipse, please see How to Run Java Program with Eclipse.

It's fairly easy.

Personal tools