Será que alguém poderia me esclarecer o que é e pra que serve o tal Serializable que é usado na manipulação de arquivos?
[]'s
marcusvinct
Será que alguém poderia me esclarecer o que é e pra que serve o tal Serializable que é usado na manipulação de arquivos?
[]'s
marcusvinct
Marcus:
A interface java.io.serializable (como talvez deve ter percebido) não define nenhum método. Ela serve como um “indicador” de que o objeto instanciador pode ser manipulado como um arquivo físico entre outras coisas que não me lembro direito. (Alguém me complete). :oops:
Grato,
claro e objetivo: sempre que vc precisar serializar um objeto vc deve implementar esta interface.
ou ainda. Sempre que UM objeto pode/deve/vai ser serializado, EL deve implementar essa interface
Completando o Rafael Afonso,
Serializable é uma interface de marcação.Quando vc implementa essa imterface,vc assina um contrato com a vm q atesta q vc sabe o que está fazendo.Tornar um objeto seriável permite ao objeto em memória ser persistido em disco,trafegar por uma rede…
Todos objetos que armazenam dados(Como as Collections) são seriáveis,e quando quiser q um atributo de um objeto não armazene o dado junto a um objeto seriável,basta marcá-lo como transient.Quando se lida com um bean(um componente reutilizável com métodos para oferecer persistência a um objeto ) a serialização se torna indispensável.
Quando vc serializar uma classe, a instancia da classe será transformada em um arquivo texto, em um formato de bytes o qual o java entende. Este processo também pode ser chamado de persistencia. Se você quiser recuperar a instancia da classe serializada. Você aponta o path do arquivo e a instancia da classe salva passa para sua classe atual. Claro que existêm padrões para cada processo deste, mas é mais ou menos isso que acontece.
:arrow: Serializar
Object object = new javax.swing.JButton("push me");
try {
// Serialize to a file
ObjectOutput out = new ObjectOutputStream(new FileOutputStream("filename.ser"));
out.writeObject(object);
out.close();
// Serialize to a byte array
ByteArrayOutputStream bos = new ByteArrayOutputStream() ;
out = new ObjectOutputStream(bos) ;
out.writeObject(object);
out.close();
// Get the bytes of the serialized object
byte[] buf = bos.toByteArray();
} catch (IOException e) {
}
:arrow: Deserializar
try {
// Deserialize from a file
File file = new File("filename.ser");
ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
// Deserialize the object
javax.swing.JButton button = (javax.swing.JButton) in.readObject();
in.close();
// Get some byte array data
byte[] bytes = getBytesFromFile(file);
// see e36 Reading a File into a Byte Array for the implementation of this method
// Deserialize from a byte array
in = new ObjectInputStream(new ByteArrayInputStream(bytes));
button = (javax.swing.JButton) in.readObject();
in.close();
} catch (ClassNotFoundException e) {
} catch (IOException e) {
}
Fonte: www.javaalmanac.com
Valeu aí galera!
[]'s