Preciso de ajuda com serialização

Estou tentando fazer um programa de supermercado, e tenho que salvar um estoque de objetos de uma Classe produto. Por isso usei o memento com a serialização. Porem fica retornando um erro do try catch que não sei oq fazer, pois preciso salvar essa lista de Produtos e dps restaurar ela. Acho que meu problema é com a conversão da classe Produto para Object.

Aqui é meu código de memento e o de “empacotamento”.

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
public class Memento implements Serializable {SUBFACADE
    private SingletonEstoque estoque = null;
    private List<Produto> ListaDeProdutos;
    public Memento(){

    }
    public Memento(SingletonEstoque estoque, List<Produto> ListaDeProdutos){
        this.estoque = estoque;
        this.ListaDeProdutos = ListaDeProdutos;
    }
    public void restore(){
        if(estoque != null){
            for(Produto prod: ListaDeProdutos){
                estoque.AddProduto(prod);
            }
        }else{
            System.out.println("Nao a estoque salvo, tente recuperar o backup");
        }
    }
    public void RecuperaBackup(){
        List<Object> listinha = Arquivo.RecuperarBackup("Estoque.bin");
        for(Object recupera: listinha){
            Produto prod = (Produto) recupera;
            estoque.AddProduto(prod);
        }
    }
    public void FazerBackup(){
        List<Object> listinha = new ArrayList<Object>();
        for(Produto prod: ListaDeProdutos){
            Object grava = prod;
            listinha.add(grava);
        }
        Arquivo.GravarBackup(listinha, "Estoque.bin");
    }
}
import java.io.File;
import java.io.IOException;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
public class Arquivo {
    public static void GravarBackup(List<Object> listaDeProdutos, String nome){
        File arq = new File(nome);
        try{
            arq.delete();
            arq.createNewFile();
            ObjectOutputStream objOutput = new ObjectOutputStream(new FileOutputStream(arq));
            objOutput.writeObject(listaDeProdutos);
            objOutput.close();
        } catch(IOException erro){
            System.out.printf("Erro: %s", erro.getMessage());
        }
    }
    public static List<Object> RecuperarBackup(String nome){
        List<Object> listinha = new ArrayList<Object>();
        try{
            File arq = new File(nome);
            if(arq.exists()){
                ObjectInputStream objImput = new ObjectInputStream(new FileInputStream(arq));
                listinha = (List<Object>) objImput.readObject();
                objImput.close();
            }
        }catch(IOException erro1){
            System.out.printf("Erro %s ", erro1.getMessage());
        }catch (ClassNotFoundException erro2){
            System.out.printf("Erro %s ", erro2.getMessage());
        }
        return listinha;
    }
}

Posta o StackTrace do erro.

Cara, não sei se fiz certo. Porem não ta aparecendo nenhuma stacktrace para mim.
Tudo que acontece quando rodo o programa é o trycatch da classe arquivo retorna “Produto”.

Põe um printStackTrace no catch da sua exceção
:person_shrugging:t2:

Cara… simplesmente obg. printStackTrace me ajudou a achar o erro.
mtmt obg!!

1 curtida