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