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();
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.