Java Reference
In-Depth Information
Chapter 12
Serializing Objects
WHAT YOU WILL LEARN IN THIS CHAPTER
• What serialization is and how you make a class serializable
• How to write objects to a file
• What transient fields in a class are
• How to write basic types of data to an object file
• How to implement the Serializable interface
• How to read objects from a file
• How to implement serialization for classes containing objects that are not serializable by default
In this chapter, you see how you can transfer objects to and from a stream. This greatly simplifies file I/O in
your object-oriented programs. In most circumstances, the details of writing all the information that makes
up an object is taken care of completely and automatically. Similarly, objects are typically reconstructed auto-
matically from what you wrote to the file.
STORING OBJECTS IN A FILE
The process of storing and retrieving objects in an external file is called serialization . Writing an object to a
file is referred to as serializing , and reading an object from a file is called deserializing . Serialization is con-
cerned with writing objects and the fields they contain to a stream, so static member data is not included.
Static fields have whatever values are assigned by default in the class definition. Note that an array of any
type is an object and can be serialized — even an array of values of a primitive type, such as type int or type
double .
I think you might be surprised at how easy this is. Perhaps the most impressive aspect of the way serializa-
tion is implemented in Java is that you can generally read and write objects of almost any class type, including
objects of classes that you have defined yourself, without adding any code to the classes involved to support
this mechanism. For the most part, everything is taken care of automatically.
Two classes from the java.io package are used for serialization. An ObjectOutputStream object man-
ages the writing of objects to a file, and reading the objects back is handled by an object of the class
ObjectInputStream . As Figure 12-1 illustrates, these classes are derived from OutputStream and In-
putStream , respectively.
FIGURE 12-1
 
 
Search WWH ::




Custom Search