Valor de campo com Reflection

3 respostas
viniciusfaleiro

Existe alguma maneira de eu saber dinamicamente qual o tipo de um Field e pegar esse valor?

A unica maneira que consegui fazer é se vc sabe qual o tipo do Field… No caso, eu não tenho como saber e precisaria pegar esse valor … Tem como?

3 Respostas

L

Invoque o método get pertinente a field.

viniciusfaleiro

sim… Até ai eu sei…

O problema é que os campos podem ter tipos primitivos ou não…

O método get pede um parametro Object para ele passar a referencia do valor do Field… e quando passo um Object recebo um java.lang.IllegalArgumentExceptio.

Field[] f = data.get(rowIndex).getClass().getDeclaredFields();

        try {
            f[columnIndex].setAccessible(true);

            Object b = new Object();

            f[columnIndex].get(b);

            return b;
        } catch (Exception e) {
            e.printStackTrace();
        }
Erro:

java.lang.IllegalArgumentException: Can not set int field MyBeans.FuncionarioShort.rg to java.lang.Object

at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146)

at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150)

at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:37)
Marky.Vasconcelos

Voce pode passar Object.class, e no caso dos primitivos passe como Integer.class, Double.class e etc…

Criado 18 de março de 2010
Ultima resposta 18 de mar. de 2010
Respostas 3
Participantes 3