Use ObjectOutputStream to write the ArrayList object to a file called data bin

Serialization is a mechanism of converting the state of an object into a byte stream. Deserialization is the reverse process where the byte stream is used to recreate the actual Java object in memory. This mechanism is used to persist the object.

Use ObjectOutputStream to write the ArrayList object to a file called data bin

The byte stream created is platform independent. So, the object serialized on one platform can be deserialized on a different platform.

To make a Java object serializable we implement the java.io.Serializable interface.
The ObjectOutputStream class contains writeObject() method for serializing an Object.

public final void writeObject(Object obj)
                       throws IOException

The ObjectInputStream class contains readObject() method for deserializing an object.

public final Object readObject()
                  throws IOException,
               ClassNotFoundException

Advantages of Serialization
1. To save/persist state of an object.
2. To travel an object across a network.

Use ObjectOutputStream to write the ArrayList object to a file called data bin

Only the objects of those classes can be serialized which are implementing java.io.Serializable interface.
Serializable is a marker interface (has no data member and method). It is used to “mark” java classes so that objects of these classes may get certain capability. Other examples of marker interfaces are:- Cloneable and Remote.

Points to remember
1. If a parent class has implemented Serializable interface then child class doesn’t need to implement it but vice-versa is not true.
2. Only non-static data members are saved via Serialization process.
3. Static data members and transient data members are not saved via Serialization process.So, if you don’t want to save value of a non-static data member then make it transient.
4. Constructor of object is never called when an object is deserialized.
5. Associated objects must be implementing Serializable interface.
Example :

class A implements Serializable{

// B also implements Serializable
// interface.
B ob=new B();  
}

SerialVersionUID
The Serialization runtime associates a version number with each Serializable class called a SerialVersionUID, which is used during Deserialization to verify that sender and receiver of a serialized object have loaded classes for that object which are compatible with respect to serialization. If the receiver has loaded a class for the object that has different UID than that of corresponding sender’s class, the Deserialization will result in an InvalidClassException. A Serializable class can declare its own UID explicitly by declaring a field name.
It must be static, final and of type long.
i.e- ANY-ACCESS-MODIFIER static final long serialVersionUID=42L;

If a serializable class doesn’t explicitly declare a serialVersionUID, then the serialization runtime will calculate a default one for that class based on various aspects of class, as described in Java Object Serialization Specification. However it is strongly recommended that all serializable classes explicitly declare serialVersionUID value, since its computation is highly sensitive to class details that may vary depending on compiler implementations, any change in class or using different id may affect the serialized data.

It is also recommended to use private modifier for UID since it is not useful as inherited member.

serialver
The serialver is a tool that comes with JDK. It is used to get serialVersionUID number for Java classes.
You can run the following command to get serialVersionUID

serialver [-classpath classpath] [-show] [classname…]

Use ObjectOutputStream to write the ArrayList object to a file called data bin

Example 1:




// Java code for serialization and deserialization 

// of a Java object

import java.io.*;

  

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
0
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
1
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
2
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
3

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
4

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
5
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
6
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
7
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
8

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
5
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
6
class A implements Serializable{

// B also implements Serializable
// interface.
B ob=new B();  
}
1

  

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
5
class A implements Serializable{

// B also implements Serializable
// interface.
B ob=new B();  
}
4

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
5
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
6
class A implements Serializable{

// B also implements Serializable
// interface.
B ob=new B();  
}
7
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
7
class A implements Serializable{

// B also implements Serializable
// interface.
B ob=new B();  
}
9

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
5
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
4

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
2
Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
3
Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
4

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
2
Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
3
Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
7

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
5
Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
9

  

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
9

  

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
0
Object has been serialized
Data before Deserialization.
name = ab
age = 20
a = 2
b = 1000
Object has been deserialized
Data after Deserialization.
name = ab
age = 20
a = 0
b = 2000
4

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
4

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
5
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
6
Object has been serialized
Data before Deserialization.
name = ab
age = 20
a = 2
b = 1000
Object has been deserialized
Data after Deserialization.
name = ab
age = 20
a = 0
b = 2000
8
Object has been serialized
Data before Deserialization.
name = ab
age = 20
a = 2
b = 1000
Object has been deserialized
Data after Deserialization.
name = ab
age = 20
a = 0
b = 2000
9 // Java code for serialization and deserialization 0

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
5// Java code for serialization and deserialization 2

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
2// Java code for serialization and deserialization 4// Java code for serialization and deserialization 5
class A implements Serializable{

// B also implements Serializable
// interface.
B ob=new B();  
}
7// Java code for serialization and deserialization 7// Java code for serialization and deserialization 8// Java code for serialization and deserialization 9// of a Java object0

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
2// of a Java object2// of a Java object3// of a Java object4

// of a Java object

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
2// of a Java object7

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
2// of a Java object9

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
2// Java code for serialization and deserialization 2

import2import3

import2import5// Java code for serialization and deserialization 5 import7

import2import9// Java code for serialization and deserialization 5 java.io.*;1

java.io.*;

import2java.io.*;4

import2java.io.*;6

java.io.*;

import2java.io.*;9

import2 1

java.io.*;

import2 4 5// of a Java object0

  

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
2
Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
9

// of a Java object

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
2
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
02
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
03

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
2
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
4

import2 4

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
08// of a Java object0

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
2
Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
9

  

  

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
2
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
15
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
16// of a Java object4

  

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
2
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
20

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
2// of a Java object9

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
2// Java code for serialization and deserialization 2

import2

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
26

import2

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
28// Java code for serialization and deserialization 5
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
30

import2

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
32// Java code for serialization and deserialization 5
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
34

java.io.*;

import2

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
37

import2

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
39

java.io.*;

import2

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
42

import2 1

java.io.*;

import2 4

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
48// of a Java object0

import2 4

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
52
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
53

import2 4

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
56
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
57

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
2
Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
9

// of a Java object

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
2
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
02
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
03

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
2
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
4

import2 4

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
08// of a Java object0

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
2
Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
9

// of a Java object

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
2
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
02
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
75

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
2
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
4

import2 4

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
80// of a Java object0

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
2
Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
9

  

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
5
Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
9

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
9

Output :

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks

 

Example 2:




// Java code for serialization and deserialization 

// of a Java object

import java.io.*;

  

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
0
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
94
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
2
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
96

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
97
Object has been serialized
Data before Deserialization.
name = ab
age = 20
a = 2
b = 1000
Object has been deserialized
Data after Deserialization.
name = ab
age = 20
a = 0
b = 2000
8
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
99
class A implements Serializable{

// B also implements Serializable
// interface.
B ob=new B();  
}
00
class A implements Serializable{

// B also implements Serializable
// interface.
B ob=new B();  
}
01

class A implements Serializable{

// B also implements Serializable
// interface.
B ob=new B();  
}
02
class A implements Serializable{

// B also implements Serializable
// interface.
B ob=new B();  
}
03

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
5
class A implements Serializable{

// B also implements Serializable
// interface.
B ob=new B();  
}
05
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
7
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
8

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
5
Object has been serialized
Data before Deserialization.
name = ab
age = 20
a = 2
b = 1000
Object has been deserialized
Data after Deserialization.
name = ab
age = 20
a = 0
b = 2000
8
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
7
class A implements Serializable{

// B also implements Serializable
// interface.
B ob=new B();  
}
11

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
5
class A implements Serializable{

// B also implements Serializable
// interface.
B ob=new B();  
}
13

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
5
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
7
class A implements Serializable{

// B also implements Serializable
// interface.
B ob=new B();  
}
16

  

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
5
class A implements Serializable{

// B also implements Serializable
// interface.
B ob=new B();  
}
4

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
6
class A implements Serializable{

// B also implements Serializable
// interface.
B ob=new B();  
}
21
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
7
class A implements Serializable{

// B also implements Serializable
// interface.
B ob=new B();  
}
23
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
7
class A implements Serializable{

// B also implements Serializable
// interface.
B ob=new B();  
}
25
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
7
class A implements Serializable{

// B also implements Serializable
// interface.
B ob=new B();  
}
27

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
5
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
4

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
2
Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
3
class A implements Serializable{

// B also implements Serializable
// interface.
B ob=new B();  
}
32

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
2
Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
3
class A implements Serializable{

// B also implements Serializable
// interface.
B ob=new B();  
}
35

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
2
Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
3
Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
4

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
2
Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
3
Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
7

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
5
Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
9

  

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
9

  

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
6
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
0
class A implements Serializable{

// B also implements Serializable
// interface.
B ob=new B();  
}
49

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
6
Object has been serialized
Data before Deserialization.
name = ab
age = 20
a = 2
b = 1000
Object has been deserialized
Data after Deserialization.
name = ab
age = 20
a = 0
b = 2000
8
Object has been serialized
Data before Deserialization.
name = ab
age = 20
a = 2
b = 1000
Object has been deserialized
Data after Deserialization.
name = ab
age = 20
a = 0
b = 2000
9
class A implements Serializable{

// B also implements Serializable
// interface.
B ob=new B();  
}
53

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
5
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
4

  

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
2 4
class A implements Serializable{

// B also implements Serializable
// interface.
B ob=new B();  
}
59
class A implements Serializable{

// B also implements Serializable
// interface.
B ob=new B();  
}
60

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
2 4
class A implements Serializable{

// B also implements Serializable
// interface.
B ob=new B();  
}
63
class A implements Serializable{

// B also implements Serializable
// interface.
B ob=new B();  
}
64

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
2 4
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
52
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
53

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
2 4
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
56
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
57

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
5
Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
9

  

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
6
Object has been serialized
Data before Deserialization.
name = ab
age = 20
a = 2
b = 1000
Object has been deserialized
Data after Deserialization.
name = ab
age = 20
a = 0
b = 2000
8
Object has been serialized
Data before Deserialization.
name = ab
age = 20
a = 2
b = 1000
Object has been deserialized
Data after Deserialization.
name = ab
age = 20
a = 0
b = 2000
9 // Java code for serialization and deserialization 0

public final Object readObject()
                  throws IOException,
               ClassNotFoundException
5
public final Object readObject()
                  throws IOException,
               ClassNotFoundException
4

Object has been serialized
Object has been deserialized 
a = 1
b = geeksforgeeks
2
class A implements Serializable{

// B also implements Serializable
// interface.
B ob=new B();  
}
83// Java code for serialization and deserialization 5
class A implements Serializable{

// B also implements Serializable
// interface.
B ob=new B();  
}
85
class A implements Serializable{

// B also implements Serializable
// interface.
B ob=new B();  
}
86// Java code for serialization and deserialization 8
class A implements Serializable{

// B also implements Serializable
// interface.
B ob=new B();  
}
88// Java code for serialization and deserialization 8
class A implements Serializable{

// B also implements Serializable
// interface.
B ob=new B();  
}
90// Java code for serialization and deserialization 8
class A implements Serializable{

// B also implements Serializable
// interface.
B ob=new B();  
}
92// of a Java object0