Invoker une méthode java

amani -  
 amani -
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

Résumé de la discussion

Le problème consiste à invoquer une méthode via réflexion dans TestClass qui attend deux paramètres String, alors que le code fournit String.class comme arguments, ce qui déclenche une exception.
La solution essentielle est que Method.invoke attend des valeurs effectives pour les paramètres, et non des objets Class; il faut passer des chaînes réelles ou des objets compatibles avec String à la place.
En pratique, il convient de récupérer ces valeurs (depuis une interface utilisateur ou une logique métier), puis de construire un tableau d’Object correspondant aux types attendus avant d’appeler Method.invoke.
Des conseils supplémentaires indiquent que déclencher l’invocation après le remplissage des composants GUI, par exemple via un bouton, évite l’évaluation précoce et les erreurs de type.

Généré automatiquement par IA
sur la base des meilleures réponses
KX Messages postés 19031 Statut Modérateur 3 020
 
Quelle exception ? Que contient la classe TestClass ? En particulier définit elle un constructeur par défaut ?
6
amani
 
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
amani
 
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
amani
 
comment invoker cette methode dans TestClass?
public static String DoSomething(String x,String y)

{
return "result";
}
0
KX Messages postés 19031 Statut Modérateur 3 020
 
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 19031 Statut Modérateur 3 020
 
idem pour DoSomething
0