Como Serializar um classe com Static?

0 respostas
adrianoseven

Olá pessoal,

Tenho uma classe EMPRESA que tem um método Incluir passando por parâmetro a própria empresa, chamando um método estático "ListarEmpresa.gravar( empresa )". Essa Classe ListarEmpresa tem um ArrayList estático que serve para armazenar todas as empresas criadas, nada mais. O método gravar passa a empresa e adiciona a lista. Até aí funcionou.
Fiz uma classe GUI simples q passa o nome da empresa e qdo clica no botão Salvar, chama o método Incluir de Empresa.

CLASSE EMPRESA
public class Empresa {
    
    private String nome;
    
    public Empresa( String nome ) {
        this.nome= nome;
        
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }
    
    public void incluir( Empresa e ){
        ListaEmpresa.gravar( e );
    }
}
CLASSE LISTA EMPRESA
import java.util.ArrayList;
import java.io.*;
/**
 *
 * @author Negrão
 */
public class ListaEmpresa implements Serializable {
    
    public static ArrayList<Empresa> lista= new ArrayList<Empresa>();
    
    public ListaEmpresa() {
    }
    
    public static void gravar( Empresa e ){
        lista.add( e );
    }
    
    public static void listar( ){
        for (Empresa emp : lista) {
            System.out.println( emp.getNome() );
        }
    }
}
METÓDO QDO CLICAMOS NO BOTÃO SALVAR
private void salvarActionPerformed(java.awt.event.ActionEvent evt) {
       Empresa emp= new Empresa( tfEmpresa.getText() );
       emp.incluir( emp );
       Gravar.gravaDados( ????????????? ); // NÃO SEI COMO PASSAR A CLASSE LISTA AQUI !
            
    }

Neste código acima, onde está as ??????????? é justamente a passagem da classe ListaEmpresa. Como a classe só tem atributos e métodos estáticos, não crio uma instancia da mesma, então como passar esta instancia para salvar???

Abaixo o código da Classe Gravar ( Só pra não passar em branco )
import java.io.*;

public class Gravar implements Serializable {
        
    public void gravarDados( ListaEmpresa lista ){
        
       try{
            FileOutputStream fileStream= new FileOutputStream( "Banco.ser" );
            ObjectOutputStream os= new ObjectOutputStream( fileStream );
            
            os.writeObject( lista );
            os.close();
        
        }catch( Exception e ){
            System.out.println( "Não foi possivel Gravar" ); //Sei que não devo ter esse tipo de saída em Gui, mas é um teste.
        }
    }
Criado 23 de outubro de 2008
Respostas 0
Participantes 1