Problema com Reflection + tipo Class

3 respostas
A
Pessoal, estou precisando de uma ajuda. Creio que seja simples, mas já tentei de várias maneiras, mas não resolvi. Estou usando reflection pra executar um método de outra classe. O código é esse:
Class[] aaa = new Class[2];
                    aaa[0] = int.class;
                    aaa[1] = String.class;

Object[] bbb = new Object[2];
                    bbb[0] = 32;
                    bbb[1] = 56;



    Class clas = Class.forName("pacote.NewClass");
    Object instance = clas.newInstance();


                    Method method77 = clas.getMethod("metodoAdicionar", aaa);

                    Object returnValue77 = method77.invoke(instance, bbb);

                    System.out.println(returnValue77);
Estou tentando usar o código, mas na linha 15 da o erro "Tipo de dado incompatível". Já tentei substituir
Class[] aaa = new Class[2];
Por
Object[] aaa = new Object[2];
Mas também não funciona. Eu sei que eu poderia subtituir aquele "aaa" da 15ª linha por
Method method77 = clas.getMethod("metodoAdicionar", int.class, String.class);
(dessa maneira funciona) Mas, como não sei certo quantos métodos e quais seus tipos, pensei em "criar" essa parte como se fosse um array, ou seja, quando eu identificar um tipo, adiciono ele, e apenas depois de adicionar todos, eu executaria o reflection.

Muito Obrigado

3 Respostas

G

Sempre que você usar reflection dê preferencia a usar as wrapper ao invés do primitivo.

Olhando seu código parece estar correto, excetuando:

Class[] aaa = new Class[2];
aaa[0] = int.class;
aaa[1] = String.class;

Object[] bbb = new Object[2];
bbb[0] = 32;
bbb[1] = 56;

Você diz que tem um int e uma String, porém passa dois ints como argumentos.

Esse erro que você está tendo é em compilação ou runtime?

zoren

Acredito que é porque int é um tipo primitivo e se vc usar a classe Integer vai resolver

A

RESULVIDO.
Eu estava, mais abaixo, convertendo o bbb[1] para String. Resolvi criar o bbb[1] já como String, aí funcionou (sei lá por que).

Obrigado pela ajuda!

Criado 21 de novembro de 2009
Ultima resposta 22 de nov. de 2009
Respostas 3
Participantes 3