Java object serialization
This tutorial explains how to use Java serialization and de-serialization
Table of Contents
1. Java Serialization
Via Java Serialization you can stream your Java object to a sequence of byte and restore these objects from this stream of bytes. To make a Java object serializable you implement the java.io.Serializable
interface. This is only a marker interface which tells the Java platform that the object is serializable.
Certain system-level classes such as Thread
, OutputStream
and its subclasses, and Socket
are not serializable. If you serializable class contains such objects, it must mark then as "transient".
2. Example
Create a Java project called "de.vogella.java.serilization". Create the following Java object called Person.
package de.vogella.java.serilization; import java.io.Serializable; public class Person implements Serializable { private String firstName; private String lastName; // stupid example for transient transient private Thread myThread; public Person(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; this.myThread = new Thread(); } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } @Override public String toString() { return "Person [firstName=" + firstName + ", lastName=" + lastName + "]"; } }
The following code example show you how you can serializable and de-serializable this object.
package de.vogella.java.serilization; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; public class Main { public static void main(String[] args) { String filename = "time.ser"; Person p = new Person("Lars", "Vogel"); // save the object to file FileOutputStream fos = null; ObjectOutputStream out = null; try { fos = new FileOutputStream(filename); out = new ObjectOutputStream(fos); out.writeObject(p); out.close(); } catch (Exception ex) { ex.printStackTrace(); } // read the object from file // save the object to file FileInputStream fis = null; ObjectInputStream in = null; try { fis = new FileInputStream(filename); in = new ObjectInputStream(fis); p = (Person) in.readObject(); in.close(); } catch (Exception ex) { ex.printStackTrace(); } System.out.println(p); } }