a Serialização é um processo de conversão de um objeto em uma seqüência de bytes que pode ser transferido para um disco ou banco de dados ou podem ser enviadas através de fluxos. O processo reverso de criação de objeto a partir da sequência de bytes é chamado de deserialização.

A class must implement Serializable interface present in java.io package in order to serialize its object successfully., Serializável é uma interface de marcador que adiciona comportamento serializável à classe que a implementa.

o Java oferece Serializable API encapsulado em java.io pacote para serialização e desserialização de objetos que incluem,

  • java.io.serializable
  • java.io.Externalizable
  • ObjectInputStream
  • ObjectOutputStream

Java Marcador de interface

Marcador de Interface é uma interface especial em Java, sem qualquer campo e método., A interface Marker é usada para informar o compilador que a classe que a implementa tem algum comportamento ou significado especial. Alguns exemplo de Marcador de interface são,

  • java.io.serializable
  • java.lang.Cloneable
  • java.rmi.Remote
  • java.util.RandomAccess

Todas estas interfaces não tem qualquer método e campo. Eles só adicionam um comportamento especial às classes que os implementam. No entanto, as interfaces marcadoras foram desactualizadas desde Java 5, elas foram substituídas por anotações., As anotações são usadas no lugar da Interface de marcadores que desempenham exatamente o mesmo papel que as interfaces de marcadores fizeram antes.

para implementar serialização e deserialização, Java fornece duas classes ObjectOutputStream e ObjectInputStream.

Classe ObjectOutputStream

é usado para escrever estados de objetos para o arquivo. Um objeto que implementa a interface java.io.serializável pode ser escrito em strams. Ele fornece vários métodos para executar serialização.

Classe ObjectInputStream

um ObjectInputStream deserializa objetos e dados primitivos escritos usando um ObjectOutputStream.,

writeObject() and readObject() Methods

ThewriteObject() method ofObjectOutputStream class serializes an object and send it to the output stream.

public final void writeObject(object x) throws IOException

The readObject() method ofObjectInputStream class references object out of stream and deserialize it.

public final Object readObject() throws IOException,ClassNotFoundException

ao serializar se você não quiser que nenhum campo faça parte do Estado do objeto, então declare-o estático ou transitório com base na sua necessidade e não será incluído durante o processo de serialização java.,

Exemplo: Serialização de um Objeto em Java

neste exemplo, temos uma classe que implementa a interface Serializable para fazer o seu objeto serializado.

objeto da classe Studentinfo é serializado usando writeObject() método e escrito em student.txt arquivo.

exemplo: Deserialização do objeto em Java

para deserializar o objeto, estamos usando a classe ObjectInputStream que irá ler o objeto a partir do arquivo especificado. Veja o exemplo abaixo.,

Abhi104null

campo de contato é nulo porque,foi marcado como estático e como já discutimos campos estáticos anteriores não fica serializado.

Nota: os membros estáticos nunca são serializados porque eles estão conectados a classe não objeto de classe.

palavra-chave transitória

ao serializar um objeto, se não quisermos que certos membros de dados do objeto sejam serializados podemos mencioná-lo transitório. a palavra-chave transitória impedirá que esse membro de dados seja serializado.,

class studentinfo implements Serializable { String name; transient int rid; static String contact;}
  • fazendo um membro de dadostransient impedirá a sua serialização.
  • neste exemplo, rid não será serializado porque é transitória, e contact também permanecem desserializada porque é estática.