ClassCastException

2 respostas
smota

Ola,

Tenho uma classe A que implementa uma interface IA.

Na classe C tenho um objeto do tipo A.

Na classe D eu espero em um metodo um parametro do tipo IA, tenho uma variavel do tipo A que eu seto dentro deste método. mais ou menos assim:

//Na classe D
private A obj;

public meuMetodo(IA o) {
this.obj = (A) o;
}


//Enquanto isso ... na classe C eu chamo assim:
objD.meuMetodo(objeto_da_classe_a);

mas no castin em D (this.obj = (A) o;)da uma ClassCastException, porque?

Obrigado

2 Respostas

Paulo_Silveira

nao deveria se voce tem certeza que na classe C voce esta passando um objeto da classe A, que implementa IA.

coloque o codigo inteiro.

D

Todos seus objetos A são considerados também objetos IA por causa da interface, mas nem todos objetos IA são objetos A.
Voce pode ter um objeto X que inplementa IA, esse objeto será considerado como um objeto X e como um objeto IA, mas não tem nenhuma ligação com a classe A, portanto em seu método em D vc corre o risco de passar como parametro um objeto X, ai o cast fai falhar mesmo, portanto é bom vc rever os motivos pelo qual vc usou essa abordagem

Mas mesmo tendo essa abertura para erros ele não deveria dar uma ClassCastException a menos que uma ClassCastException realmente ocorra, portanto achoq q se o objeto passado para o método for realmente A ele não deveria da o erro.

Criado 15 de maio de 2003
Ultima resposta 16 de mai. de 2003
Respostas 2
Participantes 3