Transferência de objetos: Serialização

O processo de serialização de objetos permite converter a representação de um objeto em memória para uma seqüência de bytes que pode então ser enviada para um ObjectOutputStream, que por sua vez pode estar associado a um arquivo em disco ou a uma conexão de rede, por exemplo.

Por exemplo, para serializar um objeto da classe java.util.HashMap, armazenando seu contéudo em um arquivo em disco, uma seqüência de passos poderia ser:

// criar o objeto
   Map dados = new HashMap();
// associar informação ao objeto
   dados.put(...);
   ...
// definir o nome do arquivo
   String filename = ...;
// abrir o arquivo que irá receber o objeto serializado
   File file = new File(filename);
      if(!file.exists()){
	 file.createNewFile();
      }
   OutputStream out = new FileOutputStream(file);
// associar ao arquivo o ObjectOutputStream
   ObjectOutputStream s = new ObjectOutputStream(out);
// serializar e transferir o objeto
   s.writeObject(dados);

O processo inverso, a desserialização, permite ler essa representação de um objeto a partir de um ObjectInputStream usando o método readObject():

   InputStream in = new FileInputStream(file);
   ObjectInputStream s = new ObjectInputStream(in);
   dados = (Map) s.readObject();

Serializable

Objetos de classes para os quais são previstas serializações e desserializações devem implementar a interface java.io.Serializable, que não especifica nenhum método -- é um exemplo de uso de uma interface marker, que serve apenas para registrar a semântica de serialização.