Problema Reflection

4 respostas
L

boa noite galera, estou com um problema no codigo abaixo, no codigo abaixo eu faço um for para percorrer todos os meus fields da minha classe. na variavel ftClass ele recebe a classe
criada pelo ObjetoNovoCriado em estado de execução pelo newInstance();, o meu fielde vet ele recebe o meu atributo da minha classe que é um vetor, ai que vem a pergunta
como que eu faço para percorrer a variavel vet, sendo que na linha vet.set(ObjetoNovoCriado,“akaiakaiak”) ; quando seto o valor ele da o seguinte erro:
java.lang.IllegalArgumentException: Can not set [Ljava.lang.String; field br.classe.CalculosSimples.datas to java.lang.String

for (int i = 0; i < fld.length; i++) {
                if (fld[i].getType().isArray()){
                    Class ftClass = ObjetoNovoCriado.getClass();
                    Field vet = ftClass.getField(fld[i].getName());
                    vet.set(ObjetoNovoCriado,"akaiakaiak");
                }
            }

obrigado

4 Respostas

rmendes08
vet.set(ObjetoNovoCriado,new String[]{"akaiakaiak"});

Você tem que setar um array no campo.

L

vlw rmendes08, deu certo obrigado.

outra duvida, como que eu sei se um field meu é uma classe construida.

private CalculoAreas ca;

porque eu sei pra mim saber seu um field é um array, eu faço da seguinte forma:

if (fld[i].getType().isArray()){
rmendes08

lineofgol:
vlw rmendes08, deu certo obrigado.

outra duvida, como que eu sei se um field meu é uma classe construida.

private CalculoAreas ca;

porque eu sei pra mim saber seu um field é um array, eu faço da seguinte forma:

if (fld[i].getType().isArray()){

se tudo o mais falhar:

fld[i].getType() == CalculoAreas.class
L

mais nao tem como fazer alguma coisa mais dinamica?

Criado 29 de março de 2012
Ultima resposta 30 de mar. de 2012
Respostas 4
Participantes 2