Probléme des paramétres
amani
-
amani -
amani -
Bonjour,
Bonjour,
pour invoker une méthode m j'ai essayé ce
String v = (String) m.invoke(TestClass.class.newInstance());
Ce code est pour invoker une méthode m sans paramétres qui existe dans la classe "TestClass" et qui retoune un sting v qui est la valeur de retour de la méthode m.
J'ai essayé des méthodes sans paramétres dans la class TestClass et cele fonctionne mais si ajoute une méthoode avec paramétres, eclipse affiche que le nombre de paramétre
dans ce code est faux alors j'ai essayé ce code là(la cas géneral car on ne connait pas le nombre de paramétres exact de la méthode a invoker):
public static String[] getReturnedValues(Object...params){
{
int j=0;
try
{
{for (Method m : TestClass2.class.getMethods())
{
String v = (String) m.invoke(TestClass2.class.newInstance(),params);//ici je voulue //dire n'importe quel nombre de parmétres de n'importe quel type dans la méthode m
tab1[j]=v;
j++;
}
}
}
le problème est toujours le même et eclipse affiche que le nombre des paramètres et faux!!!
Bonjour,
pour invoker une méthode m j'ai essayé ce
String v = (String) m.invoke(TestClass.class.newInstance());
Ce code est pour invoker une méthode m sans paramétres qui existe dans la classe "TestClass" et qui retoune un sting v qui est la valeur de retour de la méthode m.
J'ai essayé des méthodes sans paramétres dans la class TestClass et cele fonctionne mais si ajoute une méthoode avec paramétres, eclipse affiche que le nombre de paramétre
dans ce code est faux alors j'ai essayé ce code là(la cas géneral car on ne connait pas le nombre de paramétres exact de la méthode a invoker):
public static String[] getReturnedValues(Object...params){
{
int j=0;
try
{
{for (Method m : TestClass2.class.getMethods())
{
String v = (String) m.invoke(TestClass2.class.newInstance(),params);//ici je voulue //dire n'importe quel nombre de parmétres de n'importe quel type dans la méthode m
tab1[j]=v;
j++;
}
}
}
le problème est toujours le même et eclipse affiche que le nombre des paramètres et faux!!!
A voir également:
- Probléme des paramétres
- Parametres de mon ordinateur - Guide
- Paramètres dns - Guide
- Leboncoin paramètres - Guide
- Paramètres luminosité - Guide
- Paramètres facebook confidentialité - Guide
1 réponse
En faisant ta boucle for (Method m : TestClass2.class.getMethods()) tu itères toutes les méthodes de la classe et tu récupères l'objet String de retour, or il faudrait filtrer les méthodes qui :
1) ne renvoie pas String
2) n'ont pas autant d'arguments que params
3) n'ont pas les même types d'arguments que params
1) ne renvoie pas String
2) n'ont pas autant d'arguments que params
3) n'ont pas les même types d'arguments que params
Voici une manière de faire, ce n'est pas forcément idéal, mais la question que tu te poses est de toute façon trop tordue pour avoir une solution élégante...
class TestClass2 { } class Data { final boolean ok; final Object obj; Data() { ok=false; obj=null; } Data(Object o) { ok=true; obj=o; } } public class Test { public static Data[] getReturnedValues(Object obj, Object...args) { Method[] met = obj.getClass().getMethods(); Data[] tab = new Data[met.length]; for (int i=0; i<tab.length; i++) { try { tab[i] = new Data(met[i].invoke(obj, args)); } catch (Exception e) { tab[i] = new Data(); } } return tab; } public static void main(String...args) throws Exception { Data[] tab = getReturnedValues(TestClass2.class.newInstance()); for (int i=0; i<tab.length; i++) { if (tab[i].ok) System.out.printf("%d : %s\n",i,tab[i].obj); else System.out.printf("%d :\n",i); } } }