wood burning stoves 2.0*
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 Android Security Essentials Live Lessons this week in the Android 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

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

Joined: Aug 03, 2008
Posts: 9291

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
a beginner wanna knows something about this( )
super(x,y) and this() in one constructor
Super ()
Overriding and Overloading
Overriding and Overloading.