import java.io.*;
import java.util.*;
class Name implements Serializable
{
private String last;
private String first;
public Name(String last, String first)
{
this.last = last;
this.first = first;
}
public String getLast()
{
return last;
}
public String getFirst()
{
return first;
}
public String toString()
{
return first + " " + last;
}
}
class CarbonUnit implements Serializable
{
private static long nextID = 0;
private long id;
public CarbonUnit()
{
id = nextID++;
}
public long getID()
{
return id;
}
}
class Person extends CarbonUnit
{
private Name name;
private Date birth;
public Person(Name name, Date birth)
{
// super();
this.name = name;
this.birth = birth;
}
public String toString()
{
return "{" + name + ", " + birth +
", " + getID() + "}";
}
}
class SerializationTest
{
public static void main(String[] args)
throws Exception
{
// Create new Persons:
System.out.println("Creating new persons:");
Person p1 =
new Person(new Name("John", "Doe"),
new Date());
System.out.println(p1);
Person p2 =
new Person(new Name("Jane", "Doe"),
new Date());
System.out.println(p2);
// Serialize to a file:
System.out.println("\nSerializing...");
ObjectOutputStream out =
new ObjectOutputStream(
new FileOutputStream("person.dat")
);
out.writeObject(p1);
out.writeObject(p2);
out.close();
// Deserialize and verify:
System.out.println("\nDeserializing...");
ObjectInputStream in =
new ObjectInputStream(
new FileInputStream("person.dat")
);
Person p3 = (Person)in.readObject();
System.out.println(p3);
Person p4 = (Person)in.readObject();
System.out.println(p4);
in.close();
}
}
/* Output:
Creating new persons:
{Doe John, Thu Aug 17 15:49:36 MDT 2000, 0}
{Doe Jane, Thu Aug 17 15:49:36 MDT 2000, 1}
Serializing...
Deserializing...
{Doe John, Thu Aug 17 15:49:36 MDT 2000, 0}
{Doe Jane, Thu Aug 17 15:49:36 MDT 2000, 1}
*/