2
respostas

Erro Exception in thread "main" java.lang.ClassCastException:

Ocorre esse erro:

Exception in thread "main" java.lang.ClassCastException: class br.com.bytebank.banco.modelo.Cliente cannot be cast to class br.com.bytebank.banco.modelo.ContaCorrente (br.com.bytebank.banco.modelo.Cliente and br.com.bytebank.banco.modelo.ContaCorrente are in unnamed module of loader 'app') at br.com.bytebank.banco.teste.io.TesteDeserializacao.main(TesteDeserializacao.java:19)

public class TesteDeserializacao {

    public static void main(String[] args) throws FileNotFoundException,     ClassNotFoundException, IOException {

        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("cc.bin"));
        ContaCorrente cc = (ContaCorrente) ois.readObject();
        ois.close();
        System.out.println(cc.getSaldo());
        System.out.println(cc.getTitular());

        System.out.println(cc.getTitular().getNome());
    }

Ja vi outrar duvidas igual a essa, mas mesmo verifica continua com erro.

obrigada!

2 respostas

Boa noite pessoal,

public static void main(String[] args) throws FileNotFoundException, IOException {

      Cliente cliente = new Cliente();

      cliente.setNome("Nico");
      cliente.setProfissao("Dev");
      cliente.setCpf("23413131");

          ContaCorrente cc  = new     ContaCorrente(222, 333);
          cc.setTitular(cliente);
          cc.deposita(222.5);
          ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream ("cc.bin"));
          oos.writeObject(cc); 
          oos.close();

    }

Pessoal obrigada, mas conseguir entender o problema, alias é mais uma questão de entendimento. Nesse caso estamos trabalhando com a conta corrente e a do cliente . Quando forem executar, verifiquem se realmente gravaram o arquivo binário, e pois ao quando for ler, ele pode ocorrer esse erro, por não reconhecer o arquivo, e cuidar, verifique se o arquivo TesteSerializacao.java também esteja ok.

Ate mais, e espero que ajudem alguém. Pois perdi tempo com isso, quando se entende você fica puto kkkkkk

Olá Mônica, tudo bem?

Esse erro ocorre quando você tenta converter um objeto em um tipo que ele não é. No seu caso, você está tentando converter um objeto do tipo Cliente em um objeto do tipo ContaCorrente, mas eles são tipos diferentes e não podem ser convertidos um no outro.

Para corrigir esse erro, você precisa verificar qual é o tipo do objeto que está sendo lido pelo ObjectInputStream e converter para o tipo correto. Certifique-se de que o objeto que está sendo lido é uma instância de ContaCorrente antes de fazer a conversão.

Segue um exemplo de como fazer isso:

ObjectInputStream ois = new ObjectInputStream(new FileInputStream("cc.bin"));
Object obj = ois.readObject();
ois.close();

if (obj instanceof ContaCorrente) {
    ContaCorrente cc = (ContaCorrente) obj;
    System.out.println(cc.getSaldo());
    System.out.println(cc.getTitular());
    System.out.println(cc.getTitular().getNome());
} else {
    System.out.println("Objeto lido não é uma instância de ContaCorrente.");
}

Espero ter ajudado e bons estudos!