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 :

java introspection getField renvoi rien


Sujet :

API standards et tierces Java

  1. #1
    Membre confirmé Avatar de jeb001
    Profil pro
    Inscrit en
    Août 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2005
    Messages : 212
    Par défaut java introspection getField renvoi rien
    Salut,

    J'ai besoin de comparer un à un des attributs de plusieurs objets... pour cela, j'utilise java.lang.reflect, pour scanner mon objet, et récupérer ses objets.

    Je compare dans l'exemple ci-dessous 2 objets de la classe 'Agents', un bean de mon application.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Field myField[] =Agents.class.getFields();
    Je regarde la valeur de mon tableau myField[] ... il est vide !
    par contre, la methode getMethod() me renvoie bien la liste des methodes, mais ce n'est pas cela qui m'interesse..

    Pourquio je ne peux pas récuperer mes attributs ? la classe agents doit peut etre implementer qqchose pour que ca fonctionne ?

    Merci !

  2. #2
    Membre confirmé Avatar de jeb001
    Profil pro
    Inscrit en
    Août 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2005
    Messages : 212
    Par défaut
    Je crois que je viens de trouver... ca ne prends que les fields 'public".. et non pas les privés...

    Un moyen pour récuperer tous les attributs, meme les privé ???

    help !!

  3. #3
    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
    Salut,


    Il faut penser à lire la javadoc ! getFields() renvoi la liste des champs accessible en public. [edit] Bon tu avais trouvé ca tout seul - nos posts se sont croisés

    Tu devrais surement te tourner vers getDeclaredFields() qui renvoi la liste de tous les champs déclaré dans la classe

    a++

  4. #4
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Un coup d'oeil à la Javadoc de la classe Class t'aurait donné la solution : utilise la méthode getDeclaredFields() à la place de getFields().

    [edit] grilled [/edit]
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  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
    Et il y a une autre différences entres les deux methodes :
    • getFields() renvoi également les champs public des classes parentes.
    • getDeclaredFields() ne renvoi que les champs de la classe courante et pas de ses classes parentes. Il faut boucler via getSuperclass() pour les obtenir tous...


    Ces remarques sont globalement vrai pour toutes les méthodes getXXX() et getDeclaredXXX() de Class

    a++

  6. #6
    Membre confirmé Avatar de jeb001
    Profil pro
    Inscrit en
    Août 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2005
    Messages : 212
    Par défaut
    Merci !!!!

    Et effectivement, c'etait bien écrit sur la javadoc

    En tout cas, merci !

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

Discussions similaires

  1. [PostgreSql] requête simple qui ne renvoie rien ?
    Par tuxout dans le forum Langage SQL
    Réponses: 6
    Dernier message: 03/08/2006, 14h06
  2. fonction php qui ne me renvoie rien
    Par renaudjuif dans le forum Langage
    Réponses: 10
    Dernier message: 01/08/2006, 10h27
  3. Ma requête ne me renvoie rien
    Par dessinateurttuyen dans le forum Langage SQL
    Réponses: 8
    Dernier message: 24/07/2006, 17h42
  4. [SQL-Server] mssql_query ne renvoie rien !
    Par Sophy75 dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 06/04/2006, 10h59
  5. [Procédure][java] A n'y rien comprendre
    Par Stessy dans le forum SQL
    Réponses: 2
    Dernier message: 18/03/2004, 15h05

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