Вопрос проверяет знание механизма сериализации в Java для сохранения состояния объекта между запусками программы.
Сериализация — это процесс преобразования объекта в последовательность байтов, которую можно сохранить в файл, базу данных или передать по сети. Десериализация — обратный процесс восстановления объекта из байтов. В Java это встроенный механизм, не требующий дополнительных библиотек.
Для сериализации класс должен реализовать маркерный интерфейс java.io.Serializable. Он не содержит методов, но указывает JVM, что объект можно сериализовать. Основные классы для работы:
ObjectOutputStream — записывает объекты в поток (например, в файл через FileOutputStream).ObjectInputStream — читает объекты из потока.import java.io.*;
class Person implements Serializable {
private static final long serialVersionUID = 1L;
String name;
int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
}
public class SerializationExample {
public static void main(String[] args) {
Person person = new Person("Alice", 30);
// Сериализация
try (ObjectOutputStream oos = new ObjectOutputStream(
new FileOutputStream("person.ser"))) {
oos.writeObject(person);
} catch (IOException e) { e.printStackTrace(); }
// Десериализация
try (ObjectInputStream ois = new ObjectInputStream(
new FileInputStream("person.ser"))) {
Person restored = (Person) ois.readObject();
System.out.println(restored.name + ", " + restored.age);
} catch (IOException | ClassNotFoundException e) { e.printStackTrace(); }
}
}serialVersionUID используется для контроля версий класса. Если не указать, JVM сгенерирует его автоматически, но при изменении класса десериализация может сломаться.transient пропускаются при сериализации (например, пароли или временные данные).Вывод: Сериализация подходит для простого сохранения состояния объектов между запусками программы, особенно в небольших проектах или для передачи данных по сети. Для сложных сценариев (большие объёмы данных, распределённые системы) лучше использовать JSON, XML или базы данных.