RosettaCodeData/Task/Object-serialization/Java/object-serialization.java

61 lines
2.2 KiB
Java

import java.io.*;
// classes must implement java.io.Serializable in order to be serializable
class Entity implements Serializable {
// it is recommended to hard-code serialVersionUID so changes to class
// will not invalidate previously serialized objects
static final long serialVersionUID = 3504465751164822571L;
String name = "Entity";
public String toString() { return name; }
}
class Person extends Entity implements Serializable {
static final long serialVersionUID = -9170445713373959735L;
Person() { name = "Cletus"; }
}
public class SerializationTest {
public static void main(String[] args) {
Person instance1 = new Person();
System.out.println(instance1);
Entity instance2 = new Entity();
System.out.println(instance2);
// Serialize
try {
ObjectOutput out = new ObjectOutputStream(new FileOutputStream("objects.dat")); // open ObjectOutputStream
out.writeObject(instance1); // serialize "instance1" and "instance2" to "out"
out.writeObject(instance2);
out.close();
System.out.println("Serialized...");
} catch (IOException e) {
System.err.println("Something screwed up while serializing");
e.printStackTrace();
System.exit(1);
}
// Deserialize
try {
ObjectInput in = new ObjectInputStream(new FileInputStream("objects.dat")); // open ObjectInputStream
Object readObject1 = in.readObject(); // read two objects from "in"
Object readObject2 = in.readObject(); // you may want to cast them to the appropriate types
in.close();
System.out.println("Deserialized...");
System.out.println(readObject1);
System.out.println(readObject2);
} catch (IOException e) {
System.err.println("Something screwed up while deserializing");
e.printStackTrace();
System.exit(1);
} catch (ClassNotFoundException e) {
System.err.println("Unknown class for deserialized object");
e.printStackTrace();
System.exit(1);
}
}
}