Serialização de objetos

3 respostas
Danielrricci

Oi amigos do guj, estou fazendo um programa que utiliza um arquivo do tipo Object para gravar objetos, mas estou tendo dificuldades na gravação! Pesquisando no guj, descobrir que é necessário implementar a Serializable na classe onde é criado o respectivo objeto. Até ai tudo bem! O problema é que a classe possui um construtor com tres atributos primitivos e um objeto. Minha dúvida é a seguinte: é preciso implementar Serializable na classe deste objeto tb ou eu aplicando apenas na classe que recebe este objeto? Outra dúvida é sobre a movimentação neste tipo de arquivo, no arquivo do tipo Random eu posso utilizar a função “Seek” para movimentar e posicionar a gravação em determinado lugar do arquivo, porém no do tipo Object ela não é disponibilizada. Alguem sabe como fazer isso?

Obrigado!

public class Aluno implements Serializable{
   private int tipo;
   private char sexo;
   private String nome;
   private int registro;
   private Data data;	


   public Aluno(int tp, String n, char s, int reg, Data dt){
      tipo = tp;
      nome = n;
      sexo = s;
      registro = reg;
      data = dt;
   }

}

3 Respostas

R

acho que vc precisa entender um pouco a interface :stuck_out_tongue:

sabe ingles? otimo material…
http://download.oracle.com/javase/tutorial/jndi/objects/serial.html

R

você não pode substituir os tipos primitivos por Classe?
não é complicado trabalhar com serialização, apenas não é nada funcional.

esta classe grava e recupera objetos e coleções em arquivo, mas realmente, não funciona em classes com atributos de tipo primitivo.

package rwk.io;

import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class Serializable{
  public static void save(Object object,String file)throws Exception{
    ByteArrayOutputStream stream=new ByteArrayOutputStream();
    ObjectOutputStream out=new ObjectOutputStream(stream);

    out.writeObject(object);
    out.flush();
    out.close();

    FileOutputStream f=new FileOutputStream(file);

    f.write(stream.toByteArray());
    f.flush();
    f.close();
  }
  public static <T>T load(String file)throws Exception{
    InputResource resource=new InputResource();
    ObjectInputStream in=new ObjectInputStream(resource.loadStream(file));

    return (T)in.readObject();
  }
}
Danielrricci

Obrigado pessoal pela atenção, conversei com alguns amigos e me indicaram utilizar banco de dados.

Criado 22 de março de 2011
Ultima resposta 25 de mar. de 2011
Respostas 3
Participantes 3