File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
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 EJB 3 in Action this week in the EJB and other Java EE Technologies 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 to be thrown..

Ankit Garg

Joined: Aug 03, 2008
Posts: 9280

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:
subject: serializing when subclass implements Serializable but super doesn't
Similar Threads
Overriding and Overloading.
Overriding and Overloading
Super ()
a beginner wanna knows something about this( )
super(x,y) and this() in one constructor