*
The moose likes Beginning Java and the fly likes Serialization question Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Spring in Action this week in the Spring forum!
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Serialization question" Watch "Serialization question" New topic
Author

Serialization question

Marx Villegas
Ranch Hand

Joined: Mar 10, 2006
Posts: 94
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


When the compiler's not happy, ain't nobody happy...
Garrett Rowe
Ranch Hand

Joined: Jan 17, 2006
Posts: 1296
As it is your writeObject and readObject methods aren't being called because they have the wrong method signitures. Change the access specifiers on your writeObject & readObject methods to private and it will work.


Some problems are so complex that you have to be highly intelligent and well informed just to be undecided about them. - Laurence J. Peter
Marx Villegas
Ranch Hand

Joined: Mar 10, 2006
Posts: 94
That explains everything...
Thanks a lot
Marx
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Serialization question