Sobes.tech
Назад к вопросам
Junior — Middle
67

Можешь перечислить основные интерфейсы, используемые для сериализации объектов в Java?

Компании, где спрашивали
Hftlabs

Ответ от нейросети

sobes.tech AI

В Java для сериализации объектов используются несколько основных интерфейсов:

  • Serializable

    • Маркерный интерфейс (не содержит методов), который указывает, что объект может быть сериализован стандартным механизмом Java.
    • Используется для преобразования объекта в поток байтов и обратно.
  • Externalizable

    • Расширяет Serializable и требует реализации методов writeExternal(ObjectOutput out) и readExternal(ObjectInput in).
    • Позволяет полностью контролировать процесс сериализации и десериализации.
  • java.beans.XMLEncoder/XMLDecoder\n - Используются для сериализации объектов в XML-формат и обратно.

  • Custom Serialization

    • Классы могут реализовать методы private void writeObject(ObjectOutputStream out) и private void readObject(ObjectInputStream in) для настройки процесса сериализации.

Пример простейшей сериализации с Serializable:

import java.io.*;

public class Person implements Serializable {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

// Сериализация
Person p = new Person("Ivan", 30);
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.dat"))) {
    oos.writeObject(p);
}

// Десериализация
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("person.dat"))) {
    Person p2 = (Person) ois.readObject();
}

Таким образом, ключевыми интерфейсами для сериализации в Java являются Serializable и Externalizable.