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 :

Method invoke avec List<generics>


Sujet :

Langage Java

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 34
    Points : 54
    Points
    54
    Par défaut Method invoke avec List<generics>
    Bonjour !
    (voilà mon premier poste.... je m'étais bien inscrit y à longtemps, mais impossible de me souvenir de mon login, arglll)
    donc....
    je bosse un peu actuellement sur des objets de généré par JAXB. A un moment je me retrouve avec un trucs du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      maboite.db.jaxb.TypePomme jaxbTypePomme = export.getExportLstTypePomme().getElement().get(i);

    tel que... j'aimerais faire une manipulation à la volé de ce type d'objet (sa viendra de données de paramétrage ultérieur).

    Sauf que je suis ennuyé car au niveau du "getElement" le type renvoyé est de type
    et je ne vois pas comment faire mon invocation.

    Pour l'instant j'ai écris ça, mais bien sur sa plante au niveau de l'obtention de la liste des éléments:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        Object[] args = null;
                Method methodObjJaxb = export.getClass().getMethod("getExportLstTypePomme");
                Object objJaxb = methodObjJaxb.invoke(export, args); //Ici j'ai un bel objet de type LstTypePomme
     
                Method methodObjJaxbElement = objJaxb.getClass().getMethod("getElement" );
                Object objOneElement = methodObjJaxb.invoke(objJaxb, args); //là ça plante... l'objet renvoyé est pas encore connu, pas bien manipulé. forcement, c'est une liste de type List<TypePomme>. Je sais pas comment faire
     
               //Là on y arrive jamais c'est mon élement de ma liste
                args = new Object[1];
               argsNull[0]=new Integer(1);
               Method methodElementJaxb = objOneElement.getClass().getMethod("get" );
               Object objElementJaxb =  methodObjJaxb.invoke(objOneElement, argsNull);



    Voilà, quelqu'un sait comment on peut manipuler un tel objet avec la réflexivité sur les classes?

  2. #2
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 34
    Points : 54
    Points
    54
    Par défaut suite...
    bon, j'ai continué de regardé cela hier soir. en remontant dans le code de la méthode d'incovation on à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        public Object invoke(Object obj, Object... args)
    	throws IllegalAccessException, IllegalArgumentException,
               InvocationTargetException
    et mon objet attendu de mon coté est de type :
    A l'exécution, comme ça, on ne peut pas faire d'invocation sur une méthode renvoyant un objet paramétré de la sorte?

  3. #3
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,



    Quel est le problème précisément ? Erreur de compilation ? D'exécution ?

    a++

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Points : 540
    Points
    540
    Par défaut
    Peut-être que je suis à côté de la plaque mais si ça peut faire avancer le shmilliliiiiblick...

    Citation Envoyé par youx21 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Method methodObjJaxbElement = objJaxb.getClass().getMethod("getElement" );
    Object objOneElement = methodObjJaxb.invoke(objJaxb, args); //là ça plante... l'objet renvoyé est pas encore connu
    C'est pas plutôt ça que tu veux faire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Method methodObjJaxbElement = objJaxb.getClass().getMethod("getElement" );
    Object objOneElement = methodObjJaxbElement.invoke(objJaxb, args);

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 34
    Points : 54
    Points
    54
    Par défaut ça marche!!!
    Super!!! c'était la solution!! ça faisait deux jours que je bosse sur ce "moteur générique", et là je ne comprenais plus.... c'était trop simple... argll toutes ces variables qui ce ressemble.


    MERCI BEAUCOUP!!!!

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

Discussions similaires

  1. [Débutant] Method avec list et linq to sql
    Par solaar dans le forum Linq
    Réponses: 10
    Dernier message: 30/06/2013, 17h15
  2. [Reflection] Impossible de transmettre une valeur null avec method.invoke
    Par touftouf57 dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 02/07/2010, 03h42
  3. Methode retournant une list utilisant les generics
    Par Mohicane dans le forum Langage
    Réponses: 2
    Dernier message: 28/09/2009, 11h35
  4. Réponses: 6
    Dernier message: 08/03/2007, 14h55
  5. Conditions avec liste de tuples
    Par Robert999 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/07/2004, 11h01

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