Serializable

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