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 :

[Reflection] Comment connaitre le nom de la classe qui appelle une méthode?


Sujet :

API standards et tierces Java

Vue hybride

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 105
    Par défaut [Reflection] Comment connaitre le nom de la classe qui appelle une méthode?
    Bonjour,
    J'ai 2 classes A et B qui appellent une méthode dans une classe C, j'aimerais connaitre dynamiquement laquelle des 2 classe A ou B qui a appelé cette méthode !
    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Bonjour, le plus simple, serait d'utiliser le polymorphisme, faire 2 méthodes avec le même nom mais qui prenne des paramètres différents.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class C {
        maMethode(A a) {}
        maMethode(B b) {}
    }
    Est-ce que ça réponds à ton besoin?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 105
    Par défaut
    Merci pour la réponse mais c'est pas ça ce que je voulais dire; en fait je veux juste connaitre à quelle Classe appartient la classe appelante , et l'exemple avec les classes A et B n'est qu'un exemple pour simplifier, en réalité j'ai plusieurs méthodes et plusieurs classes !! Merci.

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 105
    Par défaut
    y'as t'il une méthode ou une classe dans le package : java.lang.reflect qui permet de faire ce genre d'introspection ?

  5. #5
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Je ne crois pas que cela existe. De ce que j'en connais (pas grand chose je le reconnais) ce package est fait pour appeler de façon dynamique des classes, méthodes ou attributs, mais pas pour savoir qui a appelé la méthode courante.

    Par contre je viens de retrouver ce que j'avais fait pour identifier le nom de la méthode appelant une méthode. En modifiant le level et getMethodName en getClassName, cela devrait fonctionner.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        public static String getCallingMethod() {
            return trace(Thread.currentThread().getStackTrace(), 2);
        }
     
        private static String trace(StackTraceElement[] e, int level) {
            if(e != null && e.length >= level) {
                StackTraceElement s = e[level];
                if(s != null) {
                    return s.getMethodName();
                }
            }
            return null;
        }

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 105
    Par défaut
    Merci beaucoup !!!

Discussions similaires

  1. Nom de la class qui appelle la Servlet
    Par zangets dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 29/09/2010, 00h25
  2. [Introspection] Savoir quelle classe a appelé une méthode
    Par muad'dib dans le forum Général Java
    Réponses: 2
    Dernier message: 26/11/2008, 16h34
  3. [Runtime class loading] Appeler une méthode qui n'existe pas
    Par Invité dans le forum Général Java
    Réponses: 14
    Dernier message: 27/06/2008, 08h48
  4. Réponses: 8
    Dernier message: 02/06/2008, 11h56
  5. Demander à une classe l'appel à une méthode
    Par sliderman dans le forum Langage
    Réponses: 3
    Dernier message: 22/01/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