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 :

ClassForName mais pour des méthodes d'un objet


Sujet :

Langage Java

  1. #1
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 129
    Points : 44
    Points
    44
    Par défaut ClassForName mais pour des méthodes d'un objet
    Bonjour,

    Voilà, j'ai un objet A qui a plusieurs méthodes de type :
    fonction1();
    fonction2();
    fonction3();
    ...
    fonctionN();

    Je voudrais savoir si il y a pas une fonction java qui permet de faire de l'introspection sur des méthodes :
    par ex :
    A.MethodeForName("fonction"+N+"()")


    Merci de votre aide.

  2. #2
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Bonjour.

    La classe Class que tu récupère via la méthode forName() te permet de récupérer toutes ses méthodes via getMethod(String, Class[]) ou getMethods().

    Le type de l'objet récupéré représentant une Méthode est Method.


    -"Tout ça me paraît très mal organisé. Je veux déposer une réclamation. Je paye mes impôts, après tout!"
    -"JE SUIS LA MORT, PAS LES IMPÔTS! MOI, JE N'ARRIVE QU'UNE FOIS".

    Pieds d'argile (1996), Terry Pratchett 1948 - 2015
    (trad. Patrick Couton)

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 194
    Points : 234
    Points
    234
    Par défaut
    Citation Envoyé par Shogun
    Bonjour,

    Voilà, j'ai un objet A qui a plusieurs méthodes de type :
    fonction1();
    fonction2();
    fonction3();
    ...
    fonctionN();

    Je voudrais savoir si il y a pas une fonction java qui permet de faire de l'introspection sur des méthodes :
    par ex :
    A.MethodeForName("fonction"+N+"()")


    Merci de votre aide.
    Pourquoi ne fais-tu pas plutôt quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public void fonction(int n) {
         switch(n) {
              case 1 :
                   [...]
              case 2 :
                   [...]
              ...
              case N :
                   [...]
         }
    }

  4. #4
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Le soucis avec l'introscpection c'est que c'est couteux et lourd (il faut gérer plein d'exceptions). Alors ça n'est à utiliser que si tu ne peux pas t'en dispenser.

    Si tu peux modifier ton diagramme de classe, pourquoi ne pas faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public interface Prototype {
        public <T> methode(<T> parametre1,..., <T> parametreN);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public final classe Classe1 {
        public final <T> methode(<T> parametre1,..., <T> parametreN) {
            ...
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public final class Classe2 {
        public final <T> methode(<T> parametre1,..., <T> parametreN) {
            ...
        }
    }
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public final classe ClasseN {
        public final <T> methode(<T> parametre1,..., <T> parametreN) {
            ...
        }
    }
    Et ensuite tu crées une factory:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public final class Factory {
        public final static Prototype[] prototypes = 
            new Prototype[]{
                new Classe1(),
                new Classe2(),
                ... ,
                new Classen()};
     
        public final static Prototype getInstance(final int i) {
            return prototypes[i];
        }
    }
    et alors tu n'as plus qu'à faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Factory.getInstance(i).methode(parametre1,..., parametreN);

Discussions similaires

  1. [9.3] Caractère joker % / Mais pour des chiffres ?
    Par camyo dans le forum Requêtes
    Réponses: 3
    Dernier message: 24/10/2014, 15h36
  2. Portée des méthodes d'un objet
    Par doogy dans le forum jQuery
    Réponses: 4
    Dernier message: 18/12/2009, 07h55
  3. Réponses: 10
    Dernier message: 04/09/2009, 15h06
  4. Une regexp pour des méthodes C++
    Par GLDavid dans le forum Langage
    Réponses: 6
    Dernier message: 17/01/2007, 13h48

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