Sobes.tech
Junior — Middle

Explique o mecanismo do processo de serialização de objetos Java em fluxo de bytes e vice-versa.

sobes.tech IA

Resposta da IA

Em Java, o processo de transformar objetos em fluxo de bytes chama-se serialização, e o processo inverso é a desserialização.

Serialização:

  • O objeto é convertido numa sequência de bytes que pode ser guardada num ficheiro, transmitida por rede, etc.
  • Para isso, a classe do objeto deve implementar a interface Serializable.
  • Utiliza-se a classe ObjectOutputStream, que escreve o objeto no fluxo.

Desserialização:

  • O fluxo de bytes é convertido de volta num objeto.
  • Utiliza-se a classe ObjectInputStream para ler o objeto do fluxo.

Exemplo:

import java.io.*;

class Person implements Serializable {
    String name;
    int age;

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

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

// Desserialização
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("person.dat"))) {
    Person p2 = (Person) ois.readObject();
}

Assim, a serialização permite guardar o estado do objeto, e a desserialização restaurá-lo a partir dos dados guardados.