Erro de Cast

4 respostas
E

Pessoal, tenho um método que retorna um array de Object :

private Object[] container; 
public Object[] getContainer() { 
   Vetor temp = new Vetor(this.getCapacidade()); 
   for(int i=1; i<=this.getTamanho(); i++) 
   temp.insereElemento(this.getElemento(i)); 
   return temp.container; 
}

O retorno deste método vai para outro método, porém o Object[] agora sofre um cast para ItemNotaFiscal[]

public ItemNotaFiscal[] getItens() { 
   return ((ItemNotaFiscal[]) itensDaNota.getContainer()); 
}

E este método getItens() é para ser usado na seguinte instrução

ItemNotaFiscal[] itensDaNota = nota.getItens();

Porém ocorre a exceção

java.lang.ClassCastException 
   at notafiscal.NotaFiscal.getItens(NotaFiscal.java:51) 
   at notafiscal.AppTeste.main(AppTeste.java:21)

Alguém poderia me auxiliar ?

Grato

[color=“red”]* Editado - utilize a tag CODE em seus códigos[/color]

4 Respostas

D

pesquise sobre vector.toArrays(…)

E

É que na realidade eu estou implementando o meu próprio Vector…

J

nao tenho certeza, mas acho que nessa parte voce precisa criar um novo array e dar o cast nos itens de um por um. tente assim:

public ItemNotaFiscal[] getItens() {
   Object[] temp = itensDaNota.getContainer();
   ItemNotaFiscal[] retorno = new ItemNotaFiscal[temp.length];
   //AQUI VOCE FAZ UMA ROTINA QUE COPIE DE UM POR UM OS ELEMENTOS
   return retorno;
}

espero que funcione

E

Blz pura amigão. Vou ter que fazer isso mesmo. Eu já tinha feito assim, mas pensei que poderia fazer um Cast direto no array

Abração

Criado 14 de maio de 2005
Ultima resposta 15 de mai. de 2005
Respostas 4
Participantes 3