Что такое сериализация в Java
Last updated: 7 мая 2025 г.Что такое сериализация мы уже проходили в разделе потоки ввода/вывода, но повторим, так как это основы сериализации.
ObjectOutputStream
– сериалиация. Для сохранения копии объекта в поток (в файл, например) для восстановления его потом (десереализации – ObjectInputStream
)
Пример программы:
1import java.io.*;
2import java.util.*;
3
4public class JustSerialization {
5 public static void main(String[] args) {
6 // сериализация
7 try (ObjectOutputStream oos =
8 new ObjectOutputStream(new FileOutputStream("person.dat")))
9 {
10 Person p = new Person("Sam", 33, 178, true);
11 oos.writeObject(p); // сохраняем объект p в файл person.dat
12 }
13 catch (Exception ex) {
14 System.out.println(ex.getMessage());
15 }
16
17 // десериализация
18 try (ObjectInputStream ois =
19 new ObjectInputStream(new FileInputStream("person.dat")))
20 {
21 Person p = (Person) ois.readObject(); // достаем его оттуда
22 System.out.printf(
23 "Name: %s \t Age: %d \t Height: %f \t Married: %b \n",
24 p.getName(), p.getAge(), p.getHeight(), p.getMarried());
25 }
26 catch (Exception ex) {
27 System.out.println(ex.getMessage());
28 }
29 }
30}
31
32// класс, объект которого мы сериализуем/десериализуем
33class Person implements Serializable {
34 private String name;
35 private int age;
36 private double height;
37 private boolean married;
38
39 Person(String n, int a, double h, boolean m) {
40 name = n; age = a; height = h; married = m;
41 }
42
43 String getName() { return name; }
44 int getAge() { return age; }
45 double getHeight() { return height; }
46 boolean getMarried() { return married; }
47}
Вывод:

Как видим, объект был полностью успешно восстановлен.
Сериализуемый объект должен имплементировать Serializable.
Все его поля тоже должны быть Serializable
. Это важно. Простые типы типа int char и т.д. сериализуються и так, сложные же типы должны расширять Serializable.
Дополнительные материалы
(Здесь вы найдете полезные ссылки на материалы по теме. Это не обязательно, просто дополнительная информация.)
Официальная документация Oracle по сериализации
Сериализация в JSON (Gson, Jackson)
Проблемы безопасности при десериализации
Следующие уроки
Transient в Java
8
мин.
Контроль совместимости классов с помощью SerialVersionUID
9
мин.
Сериализация Singleton без утраты его сути
8
мин.