Problème lors de l'invoke en java

Eskarina43 Messages postés 2 Date d'inscription lundi 15 mars 2004 Statut Membre Dernière intervention 15 mars 2004 - 15 mars 2004 à 14:09
Eskarina43 Messages postés 2 Date d'inscription lundi 15 mars 2004 Statut Membre Dernière intervention 15 mars 2004 - 15 mars 2004 à 23:20
J'ai un petit problème lorsque j'appelle le invoke en java!

Voici un bout du code:
Class myClass = this.getClass();

Class[] typeClasses = getTypeParam(typeParameters);
Method myMethod = myClass.getDeclaredMethod(methodName, typeClasses);
obj = myMethod.invoke(myClass, parameters);

La méthode getTypeParam permet de récupéré le type de paramètre de la méthode.

Lors du getDeclaredMethod si un des paramètres est null ou est un sous-type(implémente ou hérite), on a une exception qui se lance car on ne retrouve pas la méthode qui reprends de telle paramètre.

Comment faire pour qu'il accepte des null ou des sous-types!

Merci d'avance :)

2 réponses

kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
15 mars 2004 à 18:26
Salut,

tu dois indiquer le type des paramètres et non leur valeur. Par le type des paramètres il faut comprendre le nom de la classe.
par ex :
pour la méthode
public void maMethode(String s, Calendar cal){...}

tu dois spécifier un tableau :
Class[] paramType=new Class[]{String.class, Calendar.class}
0
Eskarina43 Messages postés 2 Date d'inscription lundi 15 mars 2004 Statut Membre Dernière intervention 15 mars 2004
15 mars 2004 à 23:20
C'est ce que je fais!

Dans la méthode getTypeParam() je récupère les classes des objets passé paramètres:
param[i].getClass()

Le problème est que quand c null il me renvoit un nullpointerException. Et qu'il ne reprends la bonne méthode que lorqu'on passe en paramètre la classe et non les sous-classes, c'est à dire celle qui hérite ou implémente la classe.

Cmme ma méthode invoke est appelé dans un contexte générique, je ne sais pas à l'avance de quels types seront les paramètres et quelle est la méthode qui sera invoqué.

Merci en tout cas de ton aide
0
Rejoignez-nous