Erro com Casting

5 respostas
M

ola pessoal tudo bem,

Eu tenho uma classe de nome Dados que recebe um array de String… um metodo de um defaultTableDataProvider me retorna um array do tipo Object… eu gostaria de pegar esse array object e transformalo em um array do tipo Dados( que é a minha classe )… sendo que o array de object tem exatamente o mesmo “layout” que o array de Dados… alguem pode me ajudar… estou fazendo da seguinte forma

Object[] dt = defaultTableDataProvider.getArray()
Dados[] value = new Dados[5];

value = (Dados)dt;

porem isso gera a seguinte Exception

Description: An unhandled exception occurred during the execution of the web application. Please review the following stack trace for more information regarding the error.

Exception Details: java.lang.ClassCastException
com.sun.rave.web.ui.model.DefaultTableDataProvider$Data

valew…

5 Respostas

G

Eu acho que vc tem que por entre parentes o Object e o que vc declarou nao vale! Explicação:

A exception java.lang.classCastException ocorre quando voce tenta com cast explicito converter um objeto, ou valor, em outro que não é possivel

Espero tedo ajudado…
Senão posta de novo…

S

É que o tipo é Dados[], não Dados.

value = (Dados[])dt;
S

“marcioalvesr”:
ola pessoal tudo bem,

Eu tenho uma classe de nome Dados que recebe um array de String… um metodo de um defaultTableDataProvider me retorna um array do tipo Object… eu gostaria de pegar esse array object e transformalo em um array do tipo Dados( que é a minha classe )… sendo que o array de object tem exatamente o mesmo “layout” que o array de Dados… alguem pode me ajudar… estou fazendo da seguinte forma

Object[] dt = defaultTableDataProvider.getArray()
Dados[] value = new Dados[5];

value = (Dados)dt;

Dois problemas:

  1. O cast de um array é tb um array
value = (Dados[])dt;

Mas os arrays têm que ter o mesmo tamanho.
O seu codigo não garante isso. Deveria ser:

Dados[] value = new Dados[dt.length];

Mas isto está errado, pq não se deve iniciar um array que irá receber imediatamente outro.

  1. defaultTableDataProvider.getArray() deve retorna um array de Dados para isto funcionar. E nesse caso o codigo correto seria
Dados[] value = defaultTableDataProvider.getArray();

Se apenas retornar Object e vc tiver a CERTEZA que são todos Dados então o cast correcto é:

Dados[] value = (Dados[]) defaultTableDataProvider.getArray();
M

Fiz o que o nosso amigo sugeriu … coloquei o cast da forma que ela falow porem o erro ainda continua.

Description: An unhandled exception occurred during the execution of the web application. Please review the following stack trace for more information regarding the error.

Exception Details: java.lang.ClassCastException
[Lcom.sun.rave.web.ui.model.DefaultTableDataProvider$Data;

S

“marcioalvesr”:
Fiz o que o nosso amigo sugeriu … coloquei o cast da forma que ela falow porem o erro ainda continua.

Description: An unhandled exception occurred during the execution of the web application. Please review the following stack trace for more information regarding the error.

Exception Details: java.lang.ClassCastException
[Lcom.sun.rave.web.ui.model.DefaultTableDataProvider$Data;

Isto é um problema dentro da classe Data dentro de DefatulTableDataProvider e não tem nada a ver com o codigo acima. Coloca ai o codigo dessa classe para a gente ver

Criado 30 de dezembro de 2006
Ultima resposta 31 de dez. de 2006
Respostas 5
Participantes 4