Sobes.tech
Junior — Middle

Explicați mecanismul procesului de conversie a obiectelor Java în flux de octeți și invers.

sobes.tech AI

Răspuns de la AI

În Java, procesul de conversie a obiectelor în flux de octeți se numește serializare, iar procesul invers — deserializare.

Serializare:

  • Obiectul este convertit într-o secvență de octeți care poate fi salvată într-un fișier, transmisă prin rețea etc.
  • Pentru aceasta, clasa obiectului trebuie să implementeze interfața Serializable.
  • Se utilizează clasa ObjectOutputStream, care scrie obiectul în flux.

Deserializare:

  • Fluxul de octeți este convertit înapoi în obiect.
  • Se utilizează clasa ObjectInputStream pentru citirea obiectului din flux.

Exemplu:

import java.io.*;

class Person implements Serializable {
    String name;
    int age;

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

// Serializare
Person p = new Person("Иван", 30);
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.dat"))) {
    oos.writeObject(p);
}

// Deserializare
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("person.dat"))) {
    Person p2 = (Person) ois.readObject();
}

Astfel, serializarea permite salvarea stării obiectului, iar deserializarea — restaurarea acesteia din datele salvate.