Serialização em Java

[ad#texto]

Muitos desenvolvedores tem dúvidas sobre o que é e para que serve a serialização em Java, basicamente serialização tem o objetivo de converter de forma intuitiva e simples a instancia de uma classe em um bytes ordenados e a fazer o processo inverso.

Falando em implementação veremos um exemplo, onde em primeiro momento iremos criar uma classe de exemplo para em seguida realizar a sua serialização e por último fazer o processo inverso.

Veja a classe de exemplo:

import java.io.Serializable;
 
public class Exemplo1 implements Serializable{
private int numero;
private String nome;
 
public Exemplo1(int numero, String nome) {
 this.numero = numero;
 this.nome = nome;
}
 
public String getNome() {
 return nome;
}
 
public int getNumero() {
 return numero;
}
 
public String toString() {
 return new String("Numero = "+this.numero+" | Nome = "+this.nome);
}
}

Como podem ver é uma classe simples, onde existe um construtor que define os valores para os dois atributos e após os métodos GET, a única diferença que podemos notar é a implementação da Serializable. Note que no final foi realizado um override do método toString() para formatar a saída da classe com os valores dos atributos.

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
 
public class Teste1 {
 public static void main(String args []){
  Exemplo1 e1 = new Exemplo1(001,"White");
  Exemplo1 e2 = new Exemplo1(002,"Magician");
 
  System.out.println(e1.toString());
  System.out.println(e2.toString());
 
  ObjectOutputStream out;
  ObjectInputStream in;
 
  try{
   out = new ObjectOutputStream(new FileOutputStream(System.getProperty("user.dir")+File.separator+"Exemplo1.bin"));
   out.writeObject(e1);
   out.writeObject(e2);
   out.flush();
   out.close();
  }catch(Exception e){
   e.printStackTrace();
  }
 
  Exemplo1 e3;
  Exemplo1 e4;
 
  try {
   in = new ObjectInputStream(new FileInputStream(System.getProperty("user.dir")+File.separator+"Exemplo1.bin"));
   e3 = (Exemplo1) in.readObject();
   e4 = (Exemplo1) in.readObject();
 
   in.close();
 
   System.out.println(e3.toString());
   System.out.println(e4.toString());
  }catch (Exception e){
   e.printStackTrace();
  }
 }
}

A classe acima é bem simples e a princípio utiliza a primeira classe (Exemplo1.java) e utiliza a serialização enviando os bytes para o arquivo Exemplo1.bin. Na segunda parte da classe acima é lido o arquivo Exemplo1.bin e realizado o processo inverso, “jogando” os dados do arquivo para o objeto.

Caso tudo transcorra bem a saída do console seria:

Numero = 1 | Nome = White

Numero = 2 | Nome = Magician

Numero = 1 | Nome = White

Numero = 2 | Nome = Magician

A fonte deste post foi o WMagician, lá você irá encontrar mais sobre serialização e outros assuntos em Java, por exemplo, é possível utilizar a serialização em ambientes client-server utilizando sockets.

Tags:
Petter Rafael
Petter Rafael

Desenvolvedor Web atua com as tecnologias Java e PHP apoiadas pelos bancos de dados Oracle e MySQL. Além dos ambientes de desenvolvimento acima possuiu amplo conhecimento em servidores Apache/Tomcat, Photoshop, Arte & Foto, Flash e mais uma dezena de ferramentas e tecnologias emergentes. Atualmente colabora com o Viablog escrevendo sobre programação e tecnologia.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Junte-se a 325 outros assinantes

Busca

julho 2020
DSTQQSS
 1234
567891011
12131415161718
19202122232425
262728293031 

Categorias