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 :

[Introspection] Savoir quelle classe a appelé une méthode


Sujet :

Java

  1. #1
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 011
    Points : 1 375
    Points
    1 375
    Par défaut [Introspection] Savoir quelle classe a appelé une méthode
    Bonjour à tous,

    Voilà je voudrais connaitre le moyen de récupérer le nom de la classe qui a appelé une de mes méthodes.

    Disons que j'ai une classe A et une classe B. B appelle la méthode c() de A. Comment, à l'intérieur de c(), savoir que c'est B qui l'a appelé?

    Si je pouvais également récupérer le nom du package de B ce serait pas mal.

    En fait je recherche à faire un peu ce qui se passe lorsque l'on fait un printStackTrace(), où l'on a toute la succession des méthodes appelantes.

  2. #2
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Ce n'est pas vraiment de l'introspection. Il faut analyser le stacktrace que tu récupère comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StackTraceElement[] stack = Thread.currentThread().getStackTrace();
    Voir plus directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StackTraceElement[] stack = new Throwable().getStackTrace();
    Mais attention la génération du stacktrace est assez couteuse...

    a++

  3. #3
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 011
    Points : 1 375
    Points
    1 375
    Par défaut
    Impec' ça marche super Merci

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

Discussions similaires

  1. [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, 09h48
  2. [Reflection] Comment connaitre le nom de la classe qui appelle une méthode?
    Par framus.class dans le forum API standards et tierces
    Réponses: 11
    Dernier message: 09/06/2008, 10h13
  3. Réponses: 8
    Dernier message: 02/06/2008, 12h56
  4. Demander à une classe l'appel à une méthode
    Par sliderman dans le forum Langage
    Réponses: 3
    Dernier message: 22/01/2008, 15h45
  5. quelle classe a appelé ma méthode ?
    Par zarbiman dans le forum Logging
    Réponses: 4
    Dernier message: 02/04/2007, 12h32

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