Основы сериализации
Что такое «сериализация»?
Сериализация — это процесс преобразования объекта в последовательность байтов, которые могут быть сохранены на диск или переданы по сети. Цель сериализации — сохранить состояние объекта, чтобы его можно было восстановить позже. Обратный процесс, десериализация, восстанавливает объект из этой последовательности байтов.
Опишите процесс сериализации/десериализации с использованием Serializable.
Сериализация с использованием
Serializable
-
Подготовка класса:
-
Класс должен реализовать интерфейс
Serializable. -
Указание
serialVersionUIDрекомендуется для контроля версий.
import java.io.Serializable; public class Person implements Serializable { private static final long serialVersionUID = 1L; private String name; private int age; // Конструктор, геттеры и сеттеры } -
-
Сериализация объекта:
- Используйте
ObjectOutputStreamдля записи объекта в файл.
Person person = new Person("Alice", 30); try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.ser"))) { oos.writeObject(person); } catch (IOException e) { e.printStackTrace(); } - Используйте
-
Десериализация объекта:
- Используйте
ObjectInputStreamдля чтения объекта из файла.
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("person.ser"))) { Person deserializedPerson = (Person) ois.readObject(); System.out.println("Name: " + deserializedPerson.getName()); System.out.println("Age: " + deserializedPerson.getAge()); } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); } - Используйте
Ключевые моменты:
-
serialVersionUID участвует в проверке совместимости формы класса при десериализации. Совпадение идентификаторов само по себе не делает произвольные изменения класса совместимыми.
-
transient: Используйте для полей, которые не должны быть сериализованы.