This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
Question 15 of chapter 6 in K&B reads that "you would implement the readObject() method in SpecialSerial". I am trying to understand why implement it in SpecialSerial as opposed to TestSer, where the serialization/deserialization is done.
I didn't find any explanation in the book. Thanks for your help.
Most likely, you're confused because there are actually two different "readObject()" methods being used here. One is the "Object readObject()" method of ObjectInputStream, which is what TestSer is invoking. However, you can also implement a different readObject() method in the Serializable class itself to customize the serialization process. This other readObject() method has a different signature from the one invoked by TestSer: "void readObject(ObjectInputStream in)". Same thing with writeObject().
I always thought it was a little unfortunate that Java's designers decided to use the same name for those two methods. Something like "readObject()" and "readThisObject()" would have been a bit better, in my opinion.