Ajuda CAST

7 respostas
ari_cesar

Olá, To recebendo a informação de erro no cast só que para mim não tem como existir esse erro. O erro que que recebendo é: "java.lang.ClassCastException : java.lang.Double cannot be cast to [Ljava.lang.Double"

O meu código é esse:

ArrayList calculoValor = (ArrayList) session.createSQLQuery("select valor from tb_fluxocaixa where id= (select MAX(id-1) from tb_fluxocaixa)").list();          
		  
		    Double[] obj =   (Double[]) ((ArrayList) calculoValor).get(0);    
		    Double NovoValor = (Double)obj[0];

Esse array ta dentro de um metodo que recebe por parametro um valor do tipo Double.
Tem alguma coisa de errado nesse meu código?

7 Respostas

evertonsilvagomesjav
ari_cesar:
Olá, To recebendo a informação de erro no cast só que para mim não tem como existir esse erro. O erro que que recebendo é: "java.lang.ClassCastException : java.lang.Double cannot be cast to [Ljava.lang.Double"

O meu código é esse:

ArrayList calculoValor = (ArrayList) session.createSQLQuery("select valor from tb_fluxocaixa where id= (select MAX(id-1) from tb_fluxocaixa)").list();          
		  
		    Double[] obj =   (Double[]) ((ArrayList) calculoValor).get(0);    
		    Double NovoValor = (Double)obj[0];

Esse array ta dentro de um metodo que recebe por parametro um valor do tipo Double.
Tem alguma coisa de errado nesse meu código?

Olha cara, olhando assim, o erro me parece que é pq vc ta tendando fazer um casting de um Double para um array de Double[] ai vai da exceção mesmo.

ari_cesar

E qual é a forma correta de passar o valor do tipo Double que tá dentro do meu array para um outro objeto do tipo Double?

evertonsilvagomesjav

Double obj = new Double[5]; obj[0] = (Double) ((ArrayList) calculoValor).get(0);

ari_cesar

Assim não dá pq da erro de sintaxe e a IDE manda eu fazer CAST para Double[] .

evertonsilvagomesjav

corrigi la em cima, nao vai ter como vc usar seu array sem inicializar. Do jeito que ta ai pq vc nao cria um ArrayList de double entao?

ari_cesar

Muito Obrigado, achei a solução! Criei um Array de double, e depois criei um objeto do tipo Double e mandei colocar o valor do array dentro desse novo objeto. O código ficou assim:

ArrayList calculoValor = (ArrayList) session.createSQLQuery("select valor from tb_fluxocaixa where id= (select MAX(id-1) from tb_fluxocaixa)").list();          
		  	
		   //Objeto que vai fazer a transformação
		   Double[] trans = new Double[5];  
            /// Objeto recebe o valor armazenado no calculoValor
		    trans[0] =   (Double) ((ArrayList) calculoValor).get(0);    
           /// Passo o valor armazenado no objeto para um novo objeto do tipo Double chamado novoValor
		    Double novoValor = trans[0];
Hebert_Coelho
ari_cesar:
Muito Obrigado, achei a solução! Criei um Array de double, e depois criei um objeto do tipo Double e mandei colocar o valor do array dentro desse novo objeto. O código ficou assim:
ArrayList calculoValor = (ArrayList) session.createSQLQuery("select valor from tb_fluxocaixa where id= (select MAX(id-1) from tb_fluxocaixa)").list();          
		  	
		   //Objeto que vai fazer a transformação
		   Double[] trans = new Double[5];  
            /// Objeto recebe o valor armazenado no calculoValor
		    trans[0] =   (Double) ((ArrayList) calculoValor).get(0);    
           /// Passo o valor armazenado no objeto para um novo objeto do tipo Double chamado novoValor
		    Double novoValor = trans[0];

Blz!!!! Agora edita o tópico e coloca "[Resolvido]" por favor.

Vai ajudar outras pessoas que passem pela mesma situação!
[img]http://www.coderanch.com/images/smilies/e8a506dc4ad763aca51bec4ca7dc8560.gif[/img]

Criado 30 de agosto de 2010
Ultima resposta 31 de ago. de 2010
Respostas 7
Participantes 3