Serializacao

10 respostas
S

Boa noite,

estou com outra duvida pessoal:

to fazendo uma agenda (hehe, todo iniciante faz :D), mas estou com problemas com a serializacao… meu metodo eh o seguinte:

public void salvar(){
        String filename = "agenda.dat";
        try{
            File file = new File(filename);
            if (!file.exists()){
                file.createNewFile();
            }
        
            OutputStream out = new FileOutputStream(file);
            ObjectOutputStream saida = new ObjectOutputStream(out);
            this.listar();
            saida.writeObject(this.ag);
            saida.flush();
        }
        catch(NotSerializableException e){
            e.printStackTrace();
        }
        catch(IOException e){
            e.printStackTrace();
        }
        
    }

sendo que ‘ag’ eh um objeto do tipo agenda, e nao esta vazio (ateh tem this.listar() ali pq tava testando isso)… mas sempre da erro na linha “saida.writeObject(this.ag)”… a msg eh a seguinte:

java.io.NotSerializableException: Agenda

at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1054)

at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:278)

at AgendaTexto.salvar(AgendaTexto.java:156)

at AgendaTexto.verMudanca(AgendaTexto.java:207)

at AgendaTexto.main(AgendaTexto.java:266)

LINHA 156 => saida.write…
LINHA 207 => lugar onde chamo o metodo salvar()
LINHA 266 => linha onde eh chamado o metodo que chama o salvar()

nao sei se ficou meio confuso… mas se alguem puder me ajudar agradeco.

Valeu

10 Respostas

V

Você deve implementar a interface Serializable, esta interface não contém nenhum método serve apenas para marcar objetos que serão serializados.

public class Agenda implements Serializable{ ... }

R

sua classe implementa Serializable?

ex:

public class Agenda implements java.io.Serializable { ... }

Abraços, :wink:

R

o viniciusprd, respondemos juntos hehehehehe

Abraços,

S

eh, ateh me esqueci de dizer que jah implementava isso… mesmo assmi nao tah dando certo :confused:

V

Grande coincidência renam_daniel

Uma outra coisinha sacerdote, você pode marcar as variáveis ou objetos que você não que sejam salvos usando o modificador transient assim:

private transient Object objeto;
V

Verifique se não existe nenhum objeto dentro de sua classe que não seja Serializable caso esista marque-o como transient

R

O que faz o transient mesmo?

Abraços, :oops:

V

transient marca uma variável ou um objeto para não ser serializado, o objeto marcado como transient não será armazenado.

deve ser declarado assim:

[color=“red”]public transient NomeClasse nomeObjeto;[/color]

R

Vlw velinho…

:grin:

S

tah… mas ai eu precisaria marcar como transient apenas os que eu nao gostaria de serializar, correto?

naquela classe soh existe um objeto mesmo… que eh oq quero salvar

Criado 29 de setembro de 2004
Ultima resposta 30 de set. de 2004
Respostas 10
Participantes 3