Concept Of Serialization In Java

Serialization and Deserialization in Java with Example

In Java Serialization is a mechanism of converting the state of an object into a byte stream. On the otherside 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.

serialize-deserialize-java

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

 

// Java code for serialization and deserialization of a Java object

import java.io.*;

class Demo implements java.io.Serializable{
    public int a;
    public String b;
    // Default constructor
    public Demo(int a, String b){
        this.a = a;
        this.b = b;
    }
}

class Test{
    public static void main(String[] args){  
        Demo object = new Demo(1, "mindclues");
        String filename = "file.ser";       

        // Serialization
        try{
            //Saving of object in a file
            FileOutputStream file = new FileOutputStream(filename);
            ObjectOutputStream out = new ObjectOutputStream(file);
            // Method for serialization of object
            out.writeObject(object);             
            out.close();
            file.close();
            System.out.println("Object has been serialized");
        }catch(IOException ex){
            System.out.println("IOException is caught");
        }
        Demo object1 = null;
        // Deserialization
        try{ 
            // Reading the object from a file
            FileInputStream file = new FileInputStream(filename);
            ObjectInputStream in = new ObjectInputStream(file);            
            // Method for deserialization of object
            object1 = (Demo)in.readObject();
            in.close();
            file.close();            
            System.out.println("Object has been deserialized ");
            System.out.println("a = " + object1.a);
            System.out.println("b = " + object1.b);

        }catch(IOException ex){
            System.out.println("IOException is caught");
        }catch(ClassNotFoundException ex){
            System.out.println("ClassNotFoundException is caught");
        }

    }
}

 

Output :

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

 

Related Articles

post a comment