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 dados
transient
impedirá a sua serialização. - neste exemplo,
rid
não será serializado porque é transitória, econtact
também permanecem desserializada porque é estática.