2010-10-30 3 views
0

Je cherche actuellement à obtenir la méthode, dont le nom est stocké dans la chaîne "methodName", à partir de la classe "CC1" en utilisant Java Reflection.Représentration d'un tableau vide de classe

Method actualMethod= CC1.getMethod(methodName, parameterTypes);

C'est la syntaxe. Le problème est que la méthode ne prend aucun paramètre. Comment est-ce que je représente cela dans le paramètre Types?

où parameterTypes est le tableau de la classe

De même, le code ci-dessous invoquer cette méthode.

Object retobj = actaulMethod.invoke(actualObject, arglist);

Le arglist est tableau d'objets qui a de nouveau rien.

Si quelque chose n'est pas clair, s'il vous plaît demander. Merci .

+0

La même méthode a également fonctionné pour la méthode invoke. Merci les gars. – bsoundra

+0

Votre titre est trompeur. Vous faites référence à un tableau vide de Classes, pas à une classe nulle ... ce qui est une contradiction dans les termes. – EJP

+0

@ EJP: vous avez raison. J'ai modifié le titre de manière appropriée. – bsoundra

Répondre

3

Ne pas passer le second argument:

CC1.getMethod(methodName); 

(Ceci utilise varargs)

Cela équivaut à un tableau vide:

CC1.getMethod(methodName, new Class[] {}); 
+0

Ne pas passer le second argument donnera une erreur de compilation. Puisque j'ai une base de code plus grande, je ne serai pas capable de tester le code en passant le tableau vide aussi. – bsoundra

+2

il ne se traduira pas par une erreur de compilation, sauf si vous utilisez Java 1.4 – Bozho

1

La signature est:

Method getMethod(String name, Class... parameterTypes) 

Alors laissez simplement le deuxième paramètre sur et cela devrait fonctionner. c'est-à-dire

Method actualMethod= CC1.getMethod(methodName);