Invoker une méthode java

Fermé
amani - 30 mars 2012 à 14:42
 amani - 5 avril 2012 à 11:58
Bonjour,

Je veux invoquer une méthode"method" qui se trouve dans la classe "TestClass" qui a deux paramètres String et String j'ai essayé:
String v =(String) method.invoke(TestClass.class.newInstance(),String.class,String.class);

ce code retourne une exception pourquoi?
A voir également:

1 réponse

KX Messages postés 16760 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
30 mars 2012 à 14:49
Quelle exception ? Que contient la classe TestClass ? En particulier définit elle un constructeur par défaut ?
6
Voilà mon TestClass
public class TestClass {

public String A ()
{
return "return value of method A";
}
public String B ()
{
return "B";
}
public static String loginAs(String username,String nom)

{
return "click";
}
public String C ()
{
return "return value of method C";
}
public String D ()
{
return "D";
}

}

J'ai pas trouvé une méthode a invoquer toute les méthodes de la meme facon
0
J'ai essayé d'invoker la méthode qui a deux String comme paramétres voila l'exception
java.lang.IllegalArgumentException: argument type mismatch
0
comment invoker cette methode dans TestClass?
public static String DoSomething(String x,String y)

{
return "result";
}
0
KX Messages postés 16760 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
30 mars 2012 à 15:23
As-tu bien compris à quoi servait newInstance ? Tu l'utilises quand il faut pas, et tu l'oublies quand il faut !

En faisant String.class tu passes deux paramètres de type Class, alors que tu veux des paramètres de type String ! Tu devrait donc mettre String.class.newInstance()

A contrario, loginAs étant static, il faudrait donc invoquer la méthode avec TestClass.class et non pas avec TestClass.class.newInstance() qui ne sert à rien !

String str = (String) TestClass.class.getMethod("loginAs", String.class, String.class ).invoke(TestClass.class, String.class.newInstance(), String.class.newInstance());
0
KX Messages postés 16760 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
30 mars 2012 à 15:23
idem pour DoSomething
0