Сериализация это процесс сохранения состояния объекта в последовательность байт; десериализация это процесс восстановления объекта, из этих байт. Java Serialization API предоставляет стандартный механизм для создания сериализуемых объектов.
Реализовать интерфейс java.io.Serializable. Это интерфейс-маркер;
Листинг 1.
import java.io.Serializable;class TestSerial implements Serializable { public byte version = 100; public byte count = 0;}Следующим шагом будет фактическая сериализация объекта.
Она делается вызовом методаwriteObject() класса java.io.ObjectOutputStream.
Листинг 2.public static void main(String args[]) throws IOException { FileOutputStream fos = new FileOutputStream("temp.out"); ObjectOutputStream oos = new ObjectOutputStream(fos); TestSerial ts = new TestSerial(); oos.writeObject(ts); oos.flush(); oos.close();}Для воссоздания объекта из файла
Листинг 3.
public static void main(String args[]) throws IOException { FileInputStream fis = new FileInputStream("temp.out"); ObjectInputStream oin = new ObjectInputStream(fis); TestSerial ts = (TestSerial) oin.readObject(); System.out.println("version="+ts.version);}Восстановление объекта происходит с помощью вызова метода oin.readObject(). В методе происходит чтение набора байт из файла и создаие точной копии графа оригинального объекта. oin.readObject() может прочитать любой сериализованный объект, поэтому необходимо полученный объект приводить к конкретному типу.
Алгоритм сериализации делает следующие вещи:
java.lang.objectФайл содержит в себе не только запись значений переменных, но полностью название класса, переменных и их значения, а также ту же информацию для всех родителей (подробнее смотри в источнике).