Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Problema na classe Cliente.

Estou com problema na minha classe, segue erro

Exception in thread "main" java.lang.ClassCastException: br.com.bytebank.banco.modelo.Cliente cannot be cast to br.com.bytebank.banco.modelo.ContaCorrente
    at br.com.bytebank.banco.test.io.TesteDeserializacao.main(TesteDeserializacao.java:17)

Segue classe;

/**
 * 
 * Classe que representa um cliente no Bytebank
 * 
 * @author Renato Areas
 * @version 0.1
 * 
 */


package br.com.bytebank.banco.modelo;

import java.io.Serializable;

public class Cliente implements Serializable {

    private String nome;
    private String cpf;
    private String profissao;

    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }
    public String getCpf() {
        return cpf;
    }
    public void setCpf(String cpf) {
        this.cpf = cpf;
    }
    public String getProfissao() {
        return profissao;
    }
    public void setProfissao(String profissao) {
        this.profissao = profissao;
    }

}
4 respostas

Olá Renato!

O problema não me parece ser na classe modelo e sim na classe Teste.

Pelo que vi no problema parece que você está tentando fazer um cast de cliente para conta corrente:

Cliente cliente = new Cliente();
ContaCorrente conta = new ContaCorrente();
conta = (ContaCorrente) cliente;

Provavelmente esse está sendo o erro já que não da pra converter Cliente para ContaCorrente.

Mas se não for esse o erro eu te peço pra me enviar aqui o código da classe Teste, por favor.

Aguardo seu retorno! :D

Olá Guilherme, cara, vamos lá, estou fazendo o teste dentro do projeto bytebank-herdado-conta o meu TesteSerializacao está funcionando perfeitamente ( Segue código

package br.com.bytebank.banco.test.io;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

import br.com.bytebank.banco.modelo.Cliente;
import br.com.bytebank.banco.modelo.ContaCorrente;

public class TesteSerializacao {

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


        Cliente cliente = new Cliente();
        cliente.setNome("Renato");
        cliente.setProfissao("Dev");
        cliente.setCpf("123456789");

        ContaCorrente cc = new ContaCorrente(222, 333);
        cc.setTitular(cliente);
        cc.deposita(222.3);


        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("cc.bin"));
        oos.writeObject(cliente);
        oos.close();
    }

}

já o meu TesteDeserializacao, fiz conforme o exercício e esta dando esse problema que relatei. Estarei colocando o código para verificação.

package br.com.bytebank.banco.test.io;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

import br.com.bytebank.banco.modelo.ContaCorrente;

public class TesteDeserializacao {

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

        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().getNome());

    }

}
solução!

Olá Renato, tudo bem? Bom, me parece que você está Serializando a referência do Tipo Cliente porém quando vai Desserializar pede um Tipo Conta Corrente e por isso dá a exceção -> ClassCastException !

Pode fazer o Seguinte, quando for Serializar:

oos.writeObject(cc); // Referente a Conta Corrente

Obrigado Clovis, realmente estava desserializando a classe cliente e não Conta Corrente.

Valeu.