---
title: Основы сериализации
seo:
  title: Основы сериализации — Java Developer
  description: Тема «Основы сериализации» для собеседования Java Developer. Что такое «сериализация»? Опишите процесс сериализации/десериализации с использованием Serializable.
---

[Все темы Java Developer](/java-developer)

## <strong>Что такое «сериализация»?</strong> [#q-14bee738d69b8179bfd1f51d896bf071]

Сериализация — это процесс преобразования объекта в последовательность байтов, которые могут быть сохранены на диск или переданы по сети. Цель сериализации — сохранить состояние объекта, чтобы его можно было восстановить позже. Обратный процесс, десериализация, восстанавливает объект из этой последовательности байтов.

:::note[Ссылки для изучения]

1. [Сериализация в Java](https://javarush.com/groups/posts/2022-serializacija-i-deserializacija-v-java)
   :::

---

## <strong>Опишите процесс сериализации/десериализации с использованием</strong> <code>Serializable</code><strong>.</strong> [#q-14bee738d69b813ab39ce43b0de7ffd9]

<strong>Сериализация с использованием</strong> <code>Serializable</code>

{/* prettier-ignore */}
1. <strong>Подготовка класса&#58;</strong>

    - Класс должен реализовать интерфейс <code>Serializable</code>.

    - Указание <code>serialVersionUID</code> рекомендуется для контроля версий.

    ```java
    import java.io.Serializable;

    public class Person implements Serializable {
        private static final long serialVersionUID = 1L;
        private String name;
        private int age;

        // Конструктор, геттеры и сеттеры
    }
    ```

1. <strong>Сериализация объекта&#58;</strong>

    - Используйте <code>ObjectOutputStream</code> для записи объекта в файл.

    ```java
    Person person = new Person("Alice", 30);
    try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.ser"))) {
        oos.writeObject(person);
    } catch (IOException e) {
        e.printStackTrace();
    }
    ```

1. <strong>Десериализация объекта&#58;</strong>

    - Используйте <code>ObjectInputStream</code> для чтения объекта из файла.

    ```java
    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();
    }
    ```

#### Ключевые моменты&#58;

- serialVersionUID участвует в проверке совместимости формы класса при десериализации. Совпадение идентификаторов само по себе не делает произвольные изменения класса совместимыми.

- <strong>transient&#58;</strong> Используйте для полей, которые не должны быть
  сериализованы.

:::note[Ссылки для изучения]

1. [Сериализация в Java](https://javarush.com/groups/posts/2022-serializacija-i-deserializacija-v-java)
   :::
