The Serializable
interface in Java is a marker interface (i.e., it has no methods) that allows an object to be converted into a byte stream, which can then be saved to a file or sent over a network. It enables object persistence and object transfer.
To make a class serializable, it must:
- Implement
java.io.Serializable
. - Ensure all non-transient fields are also serializable.
Simple Program: Serialize and Deserialize an Object
LotusJavaPrince wants to save Mahesh’s user profile data into a file and restore it later.
import java.io.*; // Step 1: Make the class serializable class UserProfile implements Serializable { String name; int age; transient String password; // Won't be saved public UserProfile(String name, int age, String password) { this.name = name; this.age = age; this.password = password; } } public class SimpleSerialization { public static void main(String[] args) { UserProfile user = new UserProfile("Mahesh", 30, "secret123"); // Serialization try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("user.ser"))) { oos.writeObject(user); System.out.println("Object serialized."); } catch (IOException e) { e.printStackTrace(); } // Deserialization try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("user.ser"))) { UserProfile deserializedUser = (UserProfile) ois.readObject(); System.out.println("Name: " + deserializedUser.name); System.out.println("Age: " + deserializedUser.age); System.out.println("Password: " + deserializedUser.password); // null (transient) } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); } } }
Output
Object serialized.
Name: Mahesh
Age: 30
Password: null
Code language: JavaScript (javascript)
The Serializable
interface enables Java objects to be saved and restored across JVM sessions or sent across systems — making it a cornerstone of persistence, networking, and distributed applications. With proper care, Serializable
empowers systems like file backups, RMI, session storage, and object cloning.