Invoke Method reflection java

djdvd-Bonheur Messages postés 8 Date d'inscription vendredi 28 novembre 2014 Statut Membre Dernière intervention 29 avril 2015 - Modifié par KX le 3/03/2015 à 19:25
djdvd-Bonheur Messages postés 8 Date d'inscription vendredi 28 novembre 2014 Statut Membre Dernière intervention 29 avril 2015 - 9 mars 2015 à 14:38
Bonjour,

quelqu'un peut m'aider à invoquer une methode qui retourne un String et qui a 2 arguments String et int.
Exemple

class Calcul{
 public String formater(String texte, int valeur){
   return texte+" "+valeur;
}
public static void main(String[] args){
   Class clazz  = Class.forname(paquet.Calcul);
   Objet obj = clazz.newInstance();
  Method meth = class.getMethod("formater",...........) //je ne sais pas quoi mettre
// et aussi pour la suite :
  meth.invoke(obj,......)
} 
}


Merci
A voir également:

1 réponse

KX Messages postés 16722 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 septembre 2023 126
3 mars 2015 à 19:39
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
    }
}
0
djdvd-Bonheur Messages postés 8 Date d'inscription vendredi 28 novembre 2014 Statut Membre Dernière intervention 29 avril 2015
9 mars 2015 à 14:38
Merci oui je vois , dac je veux pouvoir cooriger la suite
Bonne journée
0
Rejoignez-nous