Problemas com java.lang.ClassCastException

1 resposta
C

Estou com um problema em meu código sempre que executo aparece o seguinte erro:

Exception in thread “main” java.lang.ClassCastException: [Lbr.uniba.as32a2.yesnet.Nodo; cannot be cast to br.uniba.as32a2.yesnet.Nodo
at br.uniba.as32a2.yesnet.PuzzleJava.main(PuzzleJava.java:64)

o trecho do código que está gerando este erro é o seguinte.
Se alguém puder me ajudar eu agradeço.
Bom dia a todos.

ArrayList puzzleFila = new ArrayList();
        puzzleFila.add(raiz);
        nodoAtual = (Nodo)puzzleFila.get(0);
        
        comp = nodoAtual.compara(nodoAtual.getEstado(), estadoFinal);
       
         while (puzzleFila != null){
        	nodoAtual = (Nodo) puzzleFila.get(0); //ERRO NESTA LINHA
        	if (comp == 1){
        		break;
        	}else{
        		nodoAtual.expandir();
        	}
        	puzzleFila.add(nodoAtual.getFilho());
        	puzzleFila.remove(0);
        }

1 Resposta

renzonuccitelli

Sugiro vc colocar os tipos na lista:

ArrayList<Nodo> puzzleFila = new ArrayList<Nodo>();
        puzzleFila.add(raiz);
        nodoAtual = puzzleFila.get(0);
        
        comp = nodoAtual.compara(nodoAtual.getEstado(), estadoFinal);
       
         while (puzzleFila != null){
        	nodoAtual =  puzzleFila.get(0); //ERRO NESTA LINHA
        	if (comp == 1){
        		break;
        	}else{
        		nodoAtual.expandir();
        	}
        	puzzleFila.add(nodoAtual.getFilho());
        	puzzleFila.remove(0);
        }

A partir do Java 5 vc já pode especificar o tipo da lista, pra não ter que ficar fazendo casting toda hora. Além de resolver o inconveniente do casting, se houver problema de casting ele mostrará em tempo de compilação e não de execução.

Criado 5 de outubro de 2008
Ultima resposta 5 de out. de 2008
Respostas 1
Participantes 2