import java.io.Serializable;
import java.io.*;
class Data implements Serializable {
private int i;
Data(int x) {
i = x;
}
public String toString() {
return Integer.toString(i);
}
}
public class Worm implements Serializable {
private static int r() {
return (int) (Math.random() * 10);
}
private Data[] datas = { new Data(r()), new Data(r()), new Data(r()) };
private Worm next;
private char c;
Worm(int i, char x) {
System.out.println("worm constructor:" + i);
c = x;
if (--i > 0) {
next = new Worm(i, (char) (x + 1));
}
}
Worm() {
System.out.println("deault constructor");
}
public String toString() {
String s = " ";
for (int i = 0; i < datas.length; i++) {
s += datas[i].toString();
}
if (next != null) {
s += next.toString();
}
return s;
}
public static void main(String[] args) {
Worm w = new Worm(6, 'a');
System.out.println("w = " + w);
try {
ObjectOutputStream out = new ObjectOutputStream(
new FileOutputStream("worm.out"));
out.writeObject("Worm storage");
out.writeObject(w);
out.close(); // Also flushes output
ObjectInputStream in = new ObjectInputStream(new FileInputStream(
"worm.out"));
String s = (String) in.readObject();
Worm w2 = (Worm) in.readObject();
System.out.println(s + ", w2 = " + w2);
} catch (Exception e) {
e.printStackTrace();
}
try {
ByteArrayOutputStream bout = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(bout);
out.writeObject("Worm storage");
out.writeObject(w);
out.flush();
ObjectInputStream in = new ObjectInputStream(
new ByteArrayInputStream(bout.toByteArray()));
String s = (String) in.readObject();
Worm w3 = (Worm) in.readObject();
System.out.println(s + ", w3 = " + w3);
} catch (Exception e) {
e.printStackTrace();
}
}
}