Serializating Objects

SerializeTest.java

ObjectOutputStream will serialize any Object that implments the marker interface Serializable.

Interface
Serializable
Not only that, but if an object contains references to other Serializable objects, ObjectOutputStream serializes them too, and preserves the links.
ObjectOutputStream
+ ObjectOutputStream( OutputStream )
+ writeObject(Object)
When the root object is de-serialized, ObjectInputStream de-serializes all referenced objects as well, and restores the links.
ObjectInputStream
+ ObjectInputStream( InputStream )
+ readObject() : Object
Thus serialization allows us to save and restore data structures of arbitrary complexity.
import java.io.*;
import java.util.*;

public class SerializeTest {

    public static void main(String[] args) throws Exception {
        List list, copy;
        
        list = Arrays.asList(new File(".").listFiles());

        serializeObject(list);

        copy = (List) deserializeObject();

        System.out.println("list.equals(copy): " + list.equals(copy));
    }

    static void serializeObject(Object obj) throws IOException {
        ObjectOutputStream oos = new ObjectOutputStream(
                                 new FileOutputStream("data.ser"));
        oos.writeObject(obj);

        oos.close();
    }

    static Object deserializeObject()  throws Exception {
        ObjectInputStream ois = new ObjectInputStream(
                                new FileInputStream("data.ser"));

        Object object = ois.readObject();

        ois.close();

        return object;
    }
}