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
ObjectInputStreampentru 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.