Bonjour,
Déjà, même sans savoir quoi mettre en arguments, tu pourrais corriger les autres erreurs de ton code, parce que là c'est très approximatif !!!
package paquet;
import java.lang.reflect.Method;
public class Calcul {
public String formater(String texte, int valeur) {
return texte + " " + valeur;
}
public static void main(String[] args) throws Exception {
Class clazz = Class.forName("paquet.Calcul");
Object obj = clazz.newInstance();
Method meth = clazz.getMethod("formater", ...); // je ne sais pas quoi mettre
// et aussi pour la suite :
meth.invoke(obj, ...);
}
}
Ce qu'il te manque ce sont les arguments, donc un String et un int, sans oublier de récupérer le résultat sinon ça ne sert à rien...
Method meth = clazz.getMethod("formater", String.class, int.class);
String res = (String) meth.invoke(obj, "toto", 42);
Remarque : ce n'est pas le sujet, mais la méthode formater devrait être static, il n'y a aucun état interne pour les objets Calcul, du coup tu n'as pas besoin de faire un newInstance, ce qui est souvent dangereux car ça présuppose que tu as un constructeur vide, ce qui n'est pas toujours le cas.
package paquet;
import java.lang.reflect.Method;
public class Calcul {
public static String formater(String texte, int valeur) {
return texte + " " + valeur;
}
public static void main(String[] args) throws Exception {
Class<Calcul> clazz = Calcul.class;
Method meth = clazz.getMethod("formater", String.class, int.class);
String res = (String) meth.invoke(null, "toto", 42);
System.out.println(res); // toto 42
}
}
9 mars 2015 à 14:38
Bonne journée