Did you implement the Serial UID?
Here is why it may not be functioning properly:
private static final long serialVersionUID = 12345678;
The class Serializable decodes written Objects by using the UID mentioned above. Without this number, the class will not be able to decode the object. I have also heard that if you significantly modify the class, then try to read back the data, the operation will fail.