Hi! I'm studying for the
SCJP exam using the great Sierra/Bates book...
And... Well, I tried to replicate some serialization code examples and it does not work as expected... here's the code:
import java.io.*;
class NsClass {
int i;
public void setI(int i) {
this.i = i;
}
public int getI(){
return this.i;
}
}
public class SerialTest extends NsClass implements Serializable{
String myVar;
public void writeObject (ObjectOutputStream oos) throws IOException, ClassNotFoundException {
oos.defaultWriteObject();
oos.writeInt(super.getI());
}
public void readObject (ObjectInputStream ois) throws IOException, ClassNotFoundException {
ois.defaultReadObject();
super.setI(ois.readInt());
}
public static void main(String [] args) {
SerialTest s1 = new SerialTest();
SerialTest s2;
s1.myVar = "this is my var...";
s1.setI(15);
//write object
try {
FileOutputStream fos = new FileOutputStream("fos.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(s1);
oos.close();
//Read written object
FileInputStream fis = new FileInputStream("fos.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
s2 = (SerialTest)ois.readObject();
System.out.println("Reading s2 var..." + s2.myVar);
System.out.println("Reading i var..." + s2.i);
}
catch (Exception ex) {
System.out.println("Exception " + ex.toString());
}
}
}
The thing is that in this custom serialization the variable i is not getting saved into the file fos.txt, so when I deserialize it and print it the result is:
Reading s2 var...this is my var...
Reading i var...0
What am I doing wrong?
Please help...
Thanks in advance
Marx