Thursday 13 October 2016

Java Tutorial : Java IO (Java Super class not implements Externalizable | Java externalization)


Click here to watch in Youtube :
https://www.youtube.com/watch?v=4xxAzIztgS8&list=UUhwKlOVR041tngjerWxVccw

Click the below Image to Enlarge
Java Tutorial : Java IO (Java Super class not implements Externalizable | Java externalization) 
Person.java
public class Person
{
    private int age;
    private double height;
    private double weight;

    public Person()
    {

    }

    public int getAge()
    {
        return age;
    }

    public void setAge(int age)
    {
        this.age = age;
    }

    public double getHeight()
    {
        return height;
    }

    public void setHeight(double height)
    {
        this.height = height;
    }

    public double getWeight()
    {
        return weight;
    }

    public void setWeight(double weight)
    {
        this.weight = weight;
    }

}
Employee.java
import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;

public class Employee extends Person implements Externalizable
{
    private int id;
    private String name;

    public Employee()
    {

    }

    public int getId()
    {
        return id;
    }

    public void setId(int id)
    {
        this.id = id;
    }

    public String getName()
    {
        return name;
    }

    public void setName(String name)
    {
        this.name = name;
    }

    @Override
    public String toString()
    {
        return "Employee [getId()=" + getId() + ", getName()=" + getName()
                + ", getAge()=" + getAge() + ", getHeight()=" + getHeight()
                + ", getWeight()=" + getWeight() + "]";
    }

    @Override
    public void writeExternal(ObjectOutput out) throws IOException
    {
        System.out.println("Inside writeExternal");

        /*
         * Since superclass does not implement
         * externalizable, we need to serialize super class
         * field in this class itself
         * 
         * Person class[Super class] fields
         */
        out.writeInt(super.getAge());
        out.writeDouble(super.getHeight());
        out.writeDouble(super.getWeight());

        /* Employee class fields */
        out.writeInt(id);
        out.writeObject(name);
    }

    @Override
    public void readExternal(ObjectInput in) throws IOException,
            ClassNotFoundException
    {
        System.out.println("Inside readExternal");

        /*
         * Since superclass does not implement
         * externalizable, we need to deserialize super
         * class field in this class itself.
         * 
         * Person class[Super class] fields.
         */

        super.setAge(in.readInt());
        super.setHeight(in.readDouble());
        super.setWeight(in.readDouble());

        /* Employee class fields */
        id = in.readInt();
        name = (String) in.readObject();
    }

}
ExternalizableWrite.java
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

public class ExternalizableWrite
{

    public static void main(String[] args) throws FileNotFoundException,
            IOException, ClassNotFoundException
    {
        ExternalizableWrite externalizableWrite = new ExternalizableWrite();
        externalizableWrite.writeEmployeeObject();
    }

    private void writeEmployeeObject() throws FileNotFoundException,
            IOException
    {
        FileOutputStream fileOutputStream = null;
        ObjectOutputStream objectOutputStream = null;
        //Serialize  
        try
        {
            fileOutputStream = new FileOutputStream("employee.ser");
            objectOutputStream = new ObjectOutputStream(fileOutputStream);

            Employee employee = new Employee();
            employee.setId(101);
            employee.setName("Peter");
            employee.setAge(25);
            employee.setHeight(4.7d);
            employee.setWeight(60d);
            
            System.out.println("Before Serializing.");
            System.out.println(employee.toString());

            /*
             * Write the specified object to the
             * ObjectOutputStream.
             */
            objectOutputStream.writeObject(employee);
            System.out
                    .println("Successfully written employee object to the file.\n");
        }
        finally
        {

            if (objectOutputStream != null)
            {
                /*
                 * Closing a ObjectOutputStream will also
                 * close the OutputStream instance to which
                 * the ObjectOutputStream is writing.
                 */
                objectOutputStream.close();
            }
        }

    }

}

Output
Before Serializing.
Employee [getId()=101, getName()=Peter, getAge()=25, getHeight()=4.7, getWeight()=60.0]
Inside writeExternal
Successfully written employee object to the file.
employee.ser

ExternalizableRead.java
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;

public class ExternalizableRead
{

    public static void main(String[] args) throws FileNotFoundException,
            IOException, ClassNotFoundException
    {
        ExternalizableRead externalizableRead = new ExternalizableRead();
        externalizableRead.readEmployeeObject();
    }

    private void readEmployeeObject() throws IOException,
            FileNotFoundException, ClassNotFoundException
    {
        FileInputStream fileInputStream = null;
        ObjectInputStream objectInputStream = null;
        //Deserialize 
        try
        {
            fileInputStream = new FileInputStream("employee.ser");
            objectInputStream = new ObjectInputStream(fileInputStream);

            /*
             * Read an object from the ObjectInputStream.
             */
            Employee employee = (Employee) objectInputStream.readObject();
            System.out
                    .println("Successfully read employee object from the file.\n");

            System.out.println("After DeSerializing.");
            System.out.println(employee.toString());

        }
        finally
        {

            if (objectInputStream != null)
            {
                /*
                 * Closing a ObjectInputStream will also
                 * close the InputStream instance from which
                 * the ObjectInputStream is reading.
                 */
                objectInputStream.close();
            }
        }

    }

}
Output
Inside readExternal
Successfully read employee object from the file.

After DeSerializing.
Employee [getId()=101, getName()=Peter, getAge()=25, getHeight()=4.7, getWeight()=60.0]

Click the below link to download the code:
https://sites.google.com/site/ramj2eev1/home/javabasics/JavaIODemo_SuperClass_Not_Externalizable_App.zip?attredirects=0&d=1

Github Link:
https://github.com/ramram43210/Java/tree/master/BasicJava/JavaIODemo_SuperClass_Not_Externalizable_App

Bitbucket Link:
https://bitbucket.org/ramram43210/java/src/9f822df4c81f286daa095d86846058f3a9c16303/BasicJava/JavaIODemo_SuperClass_Not_Externalizable_App/?at=master

See also:

  • All JavaEE Viedos Playlist
  • All JavaEE Viedos
  • All JAVA EE Links
  • Servlets Tutorial
  • All Design Patterns Links
  • JDBC Tutorial
  • Java Collection Framework Tutorial
  • JAVA Tutorial
  • Kids Tutorial
  • No comments:

    Post a Comment