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.

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.
ViamaisBLOG
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.