Object Serialization, Java, and C++

By Kevin Haverlock

Dr. Dobb's Journal August 1998

(a)
. . . 
SerializableInputStream is = new SerialiableInputStream(socket);
TimeDate timeDate = new TimeDate()
. . .
is.readObject(timeDate);
class SerializableInputStream
{
  . . . 
  public void readObject(SerializableObject serializedObj)
  }
    serializedObj.read(this);
  }
  . . . 
}
class TimeDate extends SerializableObject
{
  . . .
  public void read(SerializableInputStream inputStream)
  {
    month_ = inputStream.readString( );
    day_ = inputStream.readString( );
    year_ = inputStream.readInt( );
    date_ = inputStream.readInt( );
    hour_ = inputStream.readInt( );
    minutes_ = inputStream.readInt( );
    seconds_ =  inputStream.readInt( );
  }
  . . . 
}

(b)
TimeDate *timeDate = new TimeDate()
. . . 
SerializableOutputStream os = SerializableOutputStream(socket);
. . . 
timeDate->setServerTime( );
os->writeObject(timeDate)
SerializableInputStream::writeObject(SerializedObject&serializedObj)
{
    serializedObj.write(*this);
}
void TimeDate::write (SerializableOutputStream &outputStream)
{
   outputStream.writeString (month_);
   outputStream.writeString (day_);
   outputStream.writeInt (year_);
   outputStream.writeInt (date_);
   outputStream.writeInt (hour_);
   outputStream.writeInt (minutes_);
   outputStream.writeInt (seconds_);
}

Figure 4: (a) Java code fragment showing the reading of the serialized data stream; (b) C++ code fragment showing writing to the serialized data stream.

Back to Article


Copyright © 1998, Dr. Dobb's Journal