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

Java Discussion :

Peut-on faire une liste de fonctions en Java?


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut Peut-on faire une liste de fonctions en Java?
    Bonjour,

    Par exemple J'ai une classe avec des champs
    A, B, C, D...
    et donc les getters et setters getA(), getB(), getC().

    Y a-t-il un moyen de créer une Map
    {A, getA()}, {B, getB()}...

    Si je boucle sur cette map, je pourrais écrire quelque chose de plus lisible qu'un gros paquet de code répétitif...

    D'après mes souvenirs, ça existait en C, mais je ne trouve rien là-dessus en java.

    Merci.

  2. #2
    Membre chevronné Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Par défaut
    Non, en Java ce n'est pas possible... Il va te falloir penser autrement

    Ce qui est possible par exemple, c'est tu définis une interface avec une méthode get() par exemple, puis tu définis des objets dont la méthode get() renverra A pour certains, B pour d'autres, ... et tu mets ces objets dans ta liste

  3. #3
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    C'est possible, tu as l'utilisation de ce genre de chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Class c = Class.forName(nomDeClasse);
    Method m[] = c.getDeclaredMethods();
    Si tu t'intéresses uniquement aux getters/setters, tu as le package org.apache.commons.beanutils, et notamment BeanUtils.describe qui te renvoie une map de properties.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Citation Envoyé par Rei Ichido Voir le message
    C'est possible, tu as l'utilisation de ce genre de chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Class c = Class.forName(nomDeClasse);
    Method m[] = c.getDeclaredMethods();
    Mmm, dans tous les exemples que je vois, ils utilisent ça pour récupérer des infos sur les méthodes de la classe (paramètres, exceptions, etc); je ne vois personne appeler une fonction.
    Et en plus, je veut une Map avec certaines fonctions (j'aurais bien aimé les rentrer moi-même car en plus de A, B, C..., j'ai toto, titi, etc qui ne m'intéressent pas dans mon traitement).
    Quand à leur exécution, j'ai encore moins trouvé.

    Citation Envoyé par Rei Ichido Voir le message
    Si tu t'intéresses uniquement aux getters/setters, tu as le package org.apache.commons.beanutils, et notamment BeanUtils.describe qui te renvoie une map de properties.
    Là, je crains qu'il y ait à boire et à manger dans cette Map de properties

  5. #5
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Citation Envoyé par stof Voir le message
    Mmm, dans tous les exemples que je vois, ils utilisent ça pour récupérer des infos sur les méthodes de la classe (paramètres, exceptions, etc); je ne vois personne appeler une fonction.
    Et en plus, je veut une Map avec certaines fonctions (j'aurais bien aimé les rentrer moi-même car en plus de A, B, C..., j'ai toto, titi, etc qui ne m'intéressent pas dans mon traitement).
    Quand à leur exécution, j'ai encore moins trouvé.
    Et pourtant, c'est utilisé fort souvent, c'est la méthode invoke de la classe Method.
    Je te renvoie à la javadoc :
    http://java.sun.com/j2se/1.4.2/docs/...ct/Method.html

    Si tu veux ne garder que quelques méthodes, tu peux toujours définir une liste de noms de méthodes, et ne récupérer que les méthodes dont le nom est dans ta liste.
    Autre possibilité, tu peux générer ta liste de méthodes en allant chercher directement chacune d'elle avec la méthode de la classe Class : getMethod(java.lang.String, java.lang.Class[]).

    Là encore, je te renvoie à la javadoc :
    http://java.sun.com/j2se/1.3/docs/ap...lang/Class.htm

    Là, je crains qu'il y ait à boire et à manger dans cette Map de properties
    Oui il faut avoir un peu l'habitude, mais c'est franchement pratique quand on s'y met.

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Ouais, enfin, personnellement je préfère la recommandation de Claythest.

    Certes, c'est possible de faire ça. Mais il vaut mieux refondre son code pour avoir une approche du traitement plus orientée objet.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 21/10/2014, 18h08
  2. Réponses: 9
    Dernier message: 25/01/2012, 17h07
  3. [MySQL] Faire varier une liste en fonction d'une autre dans un formulaire
    Par lemirandais dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 19/01/2009, 22h45
  4. [TableAdapter] Peut-on en faire une liste générique ?
    Par sybaris dans le forum Framework .NET
    Réponses: 4
    Dernier message: 02/10/2008, 15h31
  5. Réponses: 14
    Dernier message: 09/04/2008, 14h45

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