IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Appel d'une méthode à partir d'un nom de méthode


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 330
    Par défaut Appel d'une méthode à partir d'un nom de méthode
    Salut,

    Nouveau en Java, je voudrais savoir s'il y a une solution technique pour appeler une méthode d'une classe en connaissant son nom sous forme de "String".

    Merci de votre aide.

  2. #2
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    A ma connaissance ca n'éxiste pas.
    Si jamais ca existe je suis preneur!!!

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 80
    Par défaut
    Salut tnarol,
    Une solution à ton probleme serait par exemple d'utiliser switch ou des if:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public static final int METHODE1=0;
    public static final int METHODE2=1;
     
    ....
     
     
    gererMethodes(int meth){
      switch(meth){
        case METHODE1:methode1();break;
        case METHODE2:methode2();break;
        default:...
      }
    }
    Après cela depend de çe que tu veux vraiment!

  4. #4
    Membre émérite Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Par défaut
    VIVE LA "REFLECTION" !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    // instancier un objet de la classe cible
    String monNom1 = "monpackage.MaClasse"
    Class maClasse = Class.forName(monNom1);
    MaClasse monObjet = (MaClasse) maClasse.newInstance();
    // recuperer la methode cible de cette classe
    String monNom2 = "maMethode";
    Class[] mesTypesDeParametre = new Class[] {Integer.class,Boolean.class};
    Method maMethode = maClasse.getMethod(monNom2,mesTypesDeParametre);
    // appeler cette methode sur cette instance
    Object[] mesValeursDeParametre = new Object[] {new Integer(9),Boolean.FALSE};
    Double monResultat = (Double)maMethode.invoke(monObject,mesValeursDeParametre);

  5. #5
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par g_rare
    VIVE LA "REFLECTION" !
    +1

    Et pour plus de détail : Introspection en JAVA, présentation de l'API Reflection

    a++

  6. #6
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 330
    Par défaut
    Citation Envoyé par g_rare
    VIVE LA "REFLECTION" !
    Super c'est exactement ça. Merci.

  7. #7
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 330
    Par défaut
    Citation Envoyé par g_rare
    VIVE LA "REFLECTION" !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Method maMethode = maClasse.getMethod(monNom2,mesTypesDeParametre);
    Si aucune méthode ne correspond je suppose que ça donne "maMethode == null" ????

  8. #8
    Membre émérite Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Par défaut
    VIVE LA JAVADOC !

    Throws:
    NoSuchMethodException - if a matching method is not found or if the name is "<init>"or "<clinit>".

  9. #9
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Attention tout de même à la visibilité de la méthode...
    Si elle n'est pas public, ça va coincer... (faut voir setAccessible())
    Sinon, tu peux utiliser getDeclaredMethods(), mais là, tu n'as pas accès aux méthodes héritées...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 330
    Par défaut
    Citation Envoyé par g_rare
    VIVE LA JAVADOC !

    OK donc si je veux ne rien faire si la méthode échoue je peux faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    try
    {
    Method maMethode = maClasse.getMethod(monNom2,mesTypesDeParametre);
    }
    catch (Exception e)
    {
     return;
    }

    n'est ce pas ?

  11. #11
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 330
    Par défaut
    Citation Envoyé par iutcien
    Salut tnarol,
    Une solution à ton probleme serait par exemple d'utiliser switch ou des if:
    Bien sûr le but est d'éviter celà...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/10/2009, 15h19
  2. Appeler une fonction à partir de son nom
    Par superpigeon dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 21/05/2008, 09h56
  3. Récupérer une variable à partir de son nom ...
    Par CynO dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/10/2005, 16h59
  4. [javascript] appel d'une fonction à partir d'une popup
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/08/2005, 15h14
  5. appel d'une fonction à partir d'un popup
    Par villeneuvejsp dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/12/2004, 17h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo