aspose file tools*
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes serializing when subclass implements Serializable but super doesn't Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Java 8 in Action this week in the Java 8 forum!
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "serializing when subclass implements Serializable but super doesn Watch "serializing when subclass implements Serializable but super doesn New topic
Author

serializing when subclass implements Serializable but super doesn't

Tapio Niemela
Ranch Hand

Joined: Jan 06, 2006
Posts: 77
This thing puzzles me. If I have understood correctly when serializing object whose superclass doesn't implement Serializable we HAVE to have no-arg constructor in the superclass. This superclass constructor is called during deserializing (as opposite to subclasses constructor). This however causes problem if there's no access to superclasses source code (I know there's JDGui, Jad and such, but still..) and it doesn't provide no-arg constructor. Then what one should done in that case? Trying to use serialization with this causes java.io.ObjectStreamException to be thrown..

Ankit Garg
Sheriff

Joined: Aug 03, 2008
Posts: 9280
    
  17

From this page
Another aspect of handling the state of a nonserializable superclass is that nonserializable superclasses must have a zero-argument constructor. This isn't important for serializing out an object, but it's incredibly important when deserializing an object. Deserialization works by creating an instance of a class and filling out its fields correctly. During this process, the deserialization algorithm doesn't actually call any of the serialized class's constructors, but does call the zero-argument constructor of the first nonserializable superclass. If there isn't a zero-argument constructor, then the deserialization algorithm can't create instances of the class, and the whole process fails.

    WARNING: If you can't create a zero-argument constructor in the first nonserializable superclass, you'll have to implement the Externalizable interface instead.


SCJP 6 | SCWCD 5 | Javaranch SCJP FAQ | SCWCD Links
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: serializing when subclass implements Serializable but super doesn't
 
Similar Threads
Overriding and Overloading
a beginner wanna knows something about this( )
Super ()
Overriding and Overloading.
super(x,y) and this() in one constructor