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 :

Utilisation de l' introspection


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Par défaut Utilisation de l' introspection
    Bonjour,

    Voilà je viens poster ici après avoir jeter un oeil sur les différents tutos que j'ai pu trouver concernant l'introspection en Java.

    En fait je dois réaliser une classe qui permet à l'aide d'une méthode utilisant 2 classes génériques en paramètres de mapper des données entre ces 2 classes suivant ce qui se trouve dans un fichier de configuration.

    Je m'explique, si j'ai dans mon fichier de config:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    attribut à renseigner="NomClasse1.Att1" valeur à attribuer="NomClasse2.Att2"
    Je dois à l'aide ma classe de mapping chercher la classe NomClasse1 et son Att1 pour lui mettre la valeur Att2 de la classe Att2, tout çà à partir des classes génériques (qui sont en fait des interfaces dont mes classes de données hérites)

    Actuellement, je n'ai pas trop d'idée pour commencer cette classe, alors plusieurs questions me viennent:

    1) Est-ce possible de le faire déja?
    2) Si oui, est-ce bien l'introspection qui me le permettra?

    De plus, je sais que j'en demande bcp mais si vous aviez un tuto interessant qui m'aurait échappé ou un bout de code pour commencer, je vous en serait très reconnaissant.

    Voila j'espère avoir été clair.

    Merci d'avance!

  2. #2
    Membre confirmé Avatar de arnobase
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 151
    Par défaut
    Salut !

    Je ne connais pas vraiment l'introspection, c'est juste une notion dont j'ai entendu parler (ou lu écrire ? notons comme celà parait étrange alors qu'il s'agit de la transcription dans le mode scriptural de cette expression exclusivement teintée d'usage oratoire... hum ... bref)

    C'est je crois un moyen d'aller creuser dans une classe pour en extraire les informations intrinseques ? ses methodes, ses types de données ? (arretez moi si je me trompe )

    Je crois que je n'ai pas bien compris ce que tu voulais faire, pourquoi l'accès à tes attributs via des getters ne sont-ils pas suffisants ?

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Par défaut
    Salut à toi!

    Bon alors oui l'introspection permet entre autre de faire ce que tu dis, du moins c'est ce que j'en ai compris, tout comme toi j'ai jamais pratiqué, pour moi ça reste de la pure théorie!

    En fait, le "problème" que j'ai, c'est que je ne connais pas a priori les classes sur lesquelles je vais devoir travailler puisque je travaille sur mes classes génériques...donc la le seul moyen que j'ai, c'est de découvrir dynamiquement de quoi est composé la classe en question et d'aller travailler sur l'attribut désigné dans mon fichier de config...

    Encore une fois, c'est comme ça que je vois mon problème, mais je ne suis sur de rien, d'où mes questions existantielles!:-)

  4. #4
    Membre Expert
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Par défaut
    Même si ce n'est pas bien compliquer à faire. Cela peut s'averer utile de d'abord évaluer des librairies pour faire ce genre de trucs. Cela t'evites de constamment réinventer la roue et ca permet de se concentrer sur le métier. un framework connu pour faire du bean2bean mapping est Dozen : http://dozer.sourceforge.net/documen...ngstarted.html.

    Sinon voici un petit bout de code pour commencer qui extrait toutes les méthodes d'une classe quelque soit sa hierarchie. Tu peux faire la même chose avec les fields dirctement même si je pense que c'est mieux de respecter la convention javabean
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            Method[] temp = this.getClass().getMethods();
            String name;
            Class[] paramTypes;
            for (int i = 0; i < temp.length; i++) {
                //Name of the method
                name = temp[i].getName();
     
            }

  5. #5
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Oui, c'est tout à fait possible avec l'introspection, il suffira d'assembler le nom de la méthode set et get des deux classes et ensuite avec l'introspection d'appeller ces deux méthodes.

    Je te conseille cet article : http://ricky81.developpez.com/tutori...pi/reflection/

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Par défaut
    Ok merci pour ces infos, je creuse dans ce sens et je reviens vers vous si ça coince!

    Bonne journée!

  7. #7
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 398
    Par défaut
    Citation Envoyé par arnobase
    Salut !

    Je ne connais pas vraiment l'introspection, c'est juste une notion dont j'ai entendu parler (ou lu écrire ? notons comme celà parait étrange alors qu'il s'agit de la transcription dans le mode scriptural de cette expression exclusivement teintée d'usage oratoire... hum ... bref)

    C'est je crois un moyen d'aller creuser dans une classe pour en extraire les informations intrinseques ? ses methodes, ses types de données ? (arretez moi si je me trompe )

    Je crois que je n'ai pas bien compris ce que tu voulais faire, pourquoi l'accès à tes attributs via des getters ne sont-ils pas suffisants ?
    un exemple d'utilisation :
    tu as un fichier XML en entrée décrivant les caractéristiques d'une voiture
    tu souhaites avoir en sortie un objet java Voiture contenant toutes les infos du fichier XML
    => tu parses le fichier, et grace à un fichier de properties par exemple tu mappes chaque tag XML rencontré avec la méthode setter à appeler pour mettre à jour l'attribut correspondant de ton objet Voiture.

    Pour faire cela, t'as besoin de l'instrospection, et tu appelles le setter qu'il faut avec la méthode donnée par zekey

    +++

  8. #8
    Membre émérite
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Par défaut
    Citation Envoyé par zekey
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            Method[] temp = this.getClass().getMethods();
            String name;
            Class[] paramTypes;
            for (int i = 0; i < temp.length; i++) {
                //Name of the method
                name = temp[i].getName();
     
            }
    Je déborde peut être un peu mais je voudrais revenir sur ce code. Ne vaudrait-il pas mieux déclarer un tableau de String pour récupérer tous les noms de méthodes de la classe ?

    De plus, j'ai encore un peu de mal avec l'introspection malgré de nombreux tutoriaux et surtout celui de ricky81 qui est pourtant très détaillé

  9. #9
    Membre Expert
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Par défaut
    Citation Envoyé par sironimo
    Je déborde peut être un peu mais je voudrais revenir sur ce code. Ne vaudrait-il pas mieux déclarer un tableau de String pour récupérer tous les noms de méthodes de la classe ?

    De plus, j'ai encore un peu de mal avec l'introspection malgré de nombreux tutoriaux et surtout celui de ricky81 qui est pourtant très détaillé
    C'est juste un exemple, pas un algo. Cependant je ne pense pas qu'un tableau de String soit une bonne approche, mieux vaut directement utilisé le type Method et mettre dans une liste (pour le caching par exemple) même si il y a un inconvénient de taille Method et Field ne sont pas Serializable <-- interdiction d'avoir le début du sentiment de l'intuition de l'idée ne me mettre cette bestiole dans une HTTPSession.

  10. #10
    Membre émérite
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Par défaut
    Ok merci pour les précisions et ne t'inquiètes pas cela ne m'avait même pas effleurer l'esprit

Discussions similaires

  1. Passer un champ à null en utilisant l'introspection
    Par jeanvalery dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 18/09/2007, 16h13
  2. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  3. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  4. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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