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

API standards et tierces Java Discussion :

[Reflection] Récupérer le retour d'une méthode


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2004
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 124
    Par défaut [Reflection] Récupérer le retour d'une méthode
    Salut,

    J'utilise l'API reflexion pour faire de l'introspection d'une classe. Voici mon bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Iterator keys = methodCreate.keySet().iterator(); 
                int j = 1;
                Method methode = (Method)keys.next();
                Class c = methode.getReturnType();
                System.out.println(c.getName());
     
                methode.invoke(objRef, null);
    Maintenant j'aimerai savoir comment je peux faire pour utiliser ce que retourne ma méthode une fois invoquée.
    Dans l'exemple que j'utilise la méthode invoquée retourne une instance d'une classe que j'aimerai à partir de la invoquer également.
    Mais comment faire ?
    merci merci

  2. #2
    Membre éprouvé Avatar de Xavinou
    Inscrit en
    Mai 2005
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 135
    Par défaut
    Le résultat est renvoyé par un la méthode invoke.
    Voici un petit extrait de la javadoc :
    Returns:
    the result of dispatching the method represented by this object on obj with parameters args
    et aussi :
    If the method completes normally, the value it returns is returned to the caller of invoke; if the value has a primitive type, it is first appropriately wrapped in an object. If the underlying method return type is void, the invocation returns null.

  3. #3
    Membre chevronné
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Par défaut
    J'entends souvent parler de l'API reflexion.

    A quoi sert-elle ?

  4. #4
    Membre chevronné
    Inscrit en
    Août 2005
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 352
    Par défaut Re: API Reflexion
    Je vois pas ou est le probleme (attention tout de meme au cas où l'appel à la méthode retourne null) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Iterator keys = methodCreate.keySet().iterator(); 
                int j = 1;
                Method methode = (Method)keys.next();
                Class c = methode.getReturnType();
                System.out.println(c.getName());
     
                Object objetResultat = methode.invoke(objRef, null);
                Method methodeDeTonObjetResultat = c.getMethod("nommethode", typesParametres);
                methodeDeTonObjetResultat.invoke(objRef, parametres);

  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 Regis.C
    J'entends souvent parler de l'API reflexion.

    A quoi sert-elle ?
    Cela permet d'obtenir des informations sur une classe à l'exécution. Pour plus d'info je te conseille le tutoriel de Ricky81 :

    Citation Envoyé par [url=http://ricky81.developpez.com/tutoriel/java/api/reflection/
    Introspection en JAVA, présentation de l'API Reflection[/url]]L'introspection consiste en la découverte, de façon dynamique, des informations propres à une classe Java. Ces informations, que nous appellerons méta données, décrivent de façon exhaustive les caractéristiques d'une classe Java (champs, méthodes, ...). Ce mécanisme est utilisé par la machine virtuelle Java en cours d'exécution, mais également par les outils de développements. L'API Java qui permet ceci est l'API Reflection, nous allons voire à travers cet article à quoi celle-ci peut servir, mais surtout comment vous pourrez l'utiliser pour vos développements Java.
    a++

  6. #6
    Membre confirmé
    Inscrit en
    Septembre 2004
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 124
    Par défaut
    Merci de vos réponses.
    Je vais essayer et je vous tiens au courant

    Merci!

    Vanessa

  7. #7
    Membre confirmé
    Inscrit en
    Septembre 2004
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 124
    Par défaut
    Oki ça semble fonctionner merci de l'aide.
    Mais il me reste un problème peut-être pourrez-vous m'aider.
    En fait la classe que je récupère de l'invocation de la méthode, quand je souhaite récupérer ses méthodes, je vois que le résultat est vide.
    Il s'agit en fait d'une classe "vide" qui étend une autre classe. Et c'est les méthodes de cette autre classe que je souhaiterai récupérer.
    Mais comment faire?

    merci merci

  8. #8
    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
    Tu n'utiliserais pas getDeclaredMethods() par hasard ? Parce que si c'est le cas c'est normal car elle ne renvoit que les méthodes déclaré dans la classe et pas les méthodes héritées...

    A la place du peux utiliser soit getMethods() qui te renvoit toutes les méthodes publiques de la classe (hérité ou pas).

    Sinon si tu veux vraiment toutes les méthodes tu peux compléter cela avec un getDeclaredMethods() récursif avec getSuperclass().

    a++

  9. #9
    Membre confirmé
    Inscrit en
    Septembre 2004
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 124
    Par défaut
    AH oui ok merci!!

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

Discussions similaires

  1. Une erreur 233 de ms sql server
    Par Hokage dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 05/10/2009, 17h40
  2. Valeur de retour d'une procédure stockée
    Par Rudyweb dans le forum MFC
    Réponses: 4
    Dernier message: 25/02/2005, 17h52
  3. variable de retour d'une procedure stocke
    Par yahia dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/09/2004, 14h12
  4. [VB6] Valeur de retour pour une Form
    Par preverse dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 17/08/2004, 17h16
  5. Valeur de retour d'une procédure externe
    Par elekis dans le forum x86 32-bits / 64-bits
    Réponses: 4
    Dernier message: 16/04/2004, 16h45

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