Invoque une methode

Signaler
Messages postés
39
Date d'inscription
samedi 26 mai 2007
Statut
Membre
Dernière intervention
31 août 2007
-
Messages postés
2113
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
-
salut
comment invoque une methode a condition que on savoire pas ces parametre ?
j'ai fait
  Method[] mm=clz.getMethods();
                         for (int i=0;i<mm.length;i++)
                            {
                                try {
                               System.out.println("parametre"+mm[i].getParameterTypes());
                        this.invoke( mm[i] , new Object[]{mm[i].getParameterTypes()});
}catch ...............
merci d'avance

5 réponses

Messages postés
5365
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
12 août 2021
111
Salut,

et en français ça donne quoi ?

Nan mais serieux faut arrêter de massacrer à ce point la langue française, ça devient pénible

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
Messages postés
2113
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
11
la c'est chaud quand même ;o) dur dur à comprendre ...
autrement tout est dans la class Method ... ;o)
et ton bout de code il est sensé faire quoi ?!!! 
et logiquement tu dois connaitre les methodes que tu veux invoker... !! 

GodConan ;o)
Messages postés
39
Date d'inscription
samedi 26 mai 2007
Statut
Membre
Dernière intervention
31 août 2007

salut ,j'ai connu la methode mais pas ces parametres
merci de votre aide
Messages postés
5365
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
12 août 2021
111
Salut,

Ton code est faux....
Tu fais ça :
this.invoke( mm[i] , new Object[]{mm[i].getParameterTypes()});
or
les paramètres ne sont pas des Class mais des objets, ce qui est de
type Class est uniquement le type des paramètres...Maintenant si ton
but est de trouver la valeur associé à chaque type c'est plus ou moins
complexe dans le sens ou il te faut quand même connaître les valeurs
que tu dois passer et surtout connaître les différents objets que ta
méthode peut accepter... Bref pour trouver une relation entre le type
et l'objet tu peut faire :

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

public class Test {

    public static void main(String[] args) throws Exception {
        Class<?> cl = Class.forName("MObject");
        Object o = cl.newInstance();
        Method[] methods = cl.getMethods();
        for(Method m : methods) {
            String name = m.getName();
            //ce test permet de na pas toucher aux methodes wait, notify, etc... et toutes les autres méthodes de Object
            if(name.equals("myMethod")) {
                System.out.println("name : " + name);
                System.out.println("Param. Type : ");
                Class<?> cls [] =  m.getParameterTypes();
                //prepare les params
                Object params [] = new Object[cls.length];
                //maintenant pour chaque type il faut creer une instance valide
                for(Class<?> c : cls) {
                    System.out.print("\tclass : " + c);
                    //maintenant pour chaque objet il faut regarder le constructeur pour instancier l'objet
                    Constructor<?> constructors [] = c.getConstructors();
                    for(Constructor<?> constructor : constructors) {
                        //il faut utiliser quel constructeur ?
                        //il faut mettre quoi comme valeurs ?               
                    }
                }
                m.invoke(o, params);
            }
        }
    }
}

import java.awt.event.ActionListener;

public class MObject {

    public void myMethod(Object obj, String str, ActionListener al) {
        System.out.println("myMethod(" + obj + ", " + str + ", " + al + ")");
    }
   
    public void myMethod(int i, long l) {
        System.out.println("myMethod(" + i + ", " + l + ")");
    }
}

Tu
vois la problématique ? à quel niveau tu vas arrêter l'introspection ?
perso je ne sais pas vraiment ce que tu veux faire mais tu te diriges
vers une usine à charbon pour pas grand chose..... Si cela ne te
dérange pas prend sur toi, fais nous une explication (en français stp
sinon on ne vas pas comprendre et n'ai pas peur de passer ton texte
dans un correcteur....) sur ce que tu cherches à faire exactement,
histoire que nous puissions t'aiguiller vers une solution moins tirée
par les cheveux que celle dans la quelle tu t'orientes.

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
Messages postés
2113
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
11
Et oui la reflexiont ;o) c est soit pour faire joujou ;o) soit pour verifier l implementation des methode dont tu as besoin mais chaque fois tu doit savoir ce que tu vas mettre dedans ;o) sinon !!! ???? ben moi non plus je vois pas trop la finalité?!!  ;o)

GodConan ;o)