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 :

Invoquer une fonction à partir de son nom sous forme de String


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut Invoquer une fonction à partir de son nom sous forme de String
    Salut,

    J'expose brièvement mon problème.

    J'ai un ArrayList contenant des chaînes de caractères (utiles pour un usage dynamique). Parmi ces chaînes je dois récupérer une seule, en fonction d'un ensemble d'éléments et cette fonction correspond à un nom de fonction dans ma classe.

    Je voudrais exécuter cette fonction qu'à partir du nom sans avoir à effectuer un ensemble de tests.

    Je sais qu'il existe la fonction invoke mais visiblement je dois pas savoir la faire fonctionner... J'ai vu ceci dans la FAQ : Comment lancer dynamiquement une méthode de classe donnée ? mais jusque là toujours rien

    je voudrais faire quelque chose de la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.invoke("nom", null);
    mais ça ne fait rien et j'ai une grosse erreur dans eclipseet à mon avis c'est normal mais je vois pas pourquoi il ne veut pas l'accepter

    Auriez-vous une idée ?

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    parce que la méthode invoke se trouve sur les objets de la classe Method, commre très bien indiqué dans la FAQs que tu as utilisé:

    http://java.developpez.com/faq/java/...onmethodinvoke

  3. #3
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Justement c'est ce que j'ai fait :
    Création d'un objet Method et invocation mais il ne me fait rien et surtout une erreur dans eclipse.

    Le code donné plus haut est là pour illustrer ce que je veux faire...

  4. #4
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Salut,
    Citation Envoyé par Kerod Voir le message
    Justement c'est ce que j'ai fait :
    Création d'un objet Method et invocation mais il ne me fait rien et surtout une erreur dans eclipse.

    Le code donné plus haut est là pour illustrer ce que je veux faire...
    Tu peux nous montrer le code (juste la création de l'objet Method et invoke) et l'erreur affichée par Eclipse ?

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par djo.mos Voir le message
    Salut,


    Tu peux nous montrer le code (juste la création de l'objet Method et invoke) et l'erreur affichée par Eclipse ?
    Histoire d'illuster ce que tu fais.

  6. #6
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Voici un exemple de ce que je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    public class maclasse
    {
          private void test()
          {
                System.out.println("test");
          }
     
          private void launcher(String nom)
          {
                 Method m = this.getClass().getMethod(nom, null);
                 m.invoke(this, null);            
          }
     
          public static void main(String[] args) throws Exception { 
                 launcher("test");
          }
    }
    Et quand je compile j'ai ça :
    Exception in thread "main" java.lang.Error: Unresolved compilation problems:
    Unhandled exception type NoSuchMethodException
    Unhandled exception type IllegalAccessException
    Unhandled exception type InvocationTargetException
    Et l'erreur porte sur la première ligne Method m ...

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

Discussions similaires

  1. Réponses: 17
    Dernier message: 02/05/2013, 17h32
  2. Réponses: 7
    Dernier message: 11/12/2008, 18h45
  3. 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
  4. Réponses: 6
    Dernier message: 06/04/2007, 21h20
  5. [VBA] Executer une fonction en passant son nom en argument
    Par David Guyon dans le forum Access
    Réponses: 4
    Dernier message: 05/10/2005, 19h56

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