Перейти к содержимому
шпаргалка.
Esc
навигацияоткрыть⌘Jпредпросмотр
На этой странице

Основы сериализации

Все темы Java Developer

Что такое «сериализация»?

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


Опишите процесс сериализации/десериализации с использованием Serializable.

Сериализация с использованием Serializable
  1. Подготовка класса:
    • Класс должен реализовать интерфейс Serializable.

    • Указание serialVersionUID рекомендуется для контроля версий.

    import java.io.Serializable;
    
    public class Person implements Serializable {
        private static final long serialVersionUID = 1L;
        private String name;
        private int age;
    
        // Конструктор, геттеры и сеттеры
    }
  2. Сериализация объекта:
    • Используйте ObjectOutputStream для записи объекта в файл.
    Person person = new Person("Alice", 30);
    try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.ser"))) {
        oos.writeObject(person);
    } catch (IOException e) {
        e.printStackTrace();
    }
  3. Десериализация объекта:
    • Используйте 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: Используйте для полей, которые не должны быть сериализованы.

Эта страница была полезной?