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 :

Comment connaitre l'appelant d'une méthode


Sujet :

API standards et tierces Java

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Points : 393
    Points
    393
    Par défaut Comment connaitre l'appelant d'une méthode
    J'ai une classe qui lit dans un fichier property. On appelle sa méthode
    String getProperty(String key);

    Je voudrais que cette classe puisse afficher la trace de son appel pour que lorsque la clé ne correspond à rien on puisse repérer l'appelant et le modifier. Comment faire ??

  2. #2
    Membre éclairé
    Avatar de divxdede
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    525
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 525
    Points : 844
    Points
    844
    Par défaut
    l'appelant peut être determiné comme ceci
    Mais ce ne sera pas l'instance de l'appelant mais la nature (sa classe) de l'appelant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    private methodeA()
    {   /* Determiner mon appelant */
         Class classeAppelante = null;
         {  try
             {  Exception e = new Exception();
                 String name = ((e.getStackTrace())[1]).getClassName();
     
                 classeAppelante = Class.forName( name );
              }
              catch(Exception e2) { classAppelante = null; }
         }
     
         .....
    }
    JBusyComponent, une API pour rendre occupé un composant swing.
    SCJP Java 6.0 (90% pass score)

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Points : 393
    Points
    393
    Par défaut
    super !

    et pour avoir carrément la méthode de la classe appelante et peut etre meme le numéro de ligne (ou l'instruction) c'est possible SVP

    Merci !

  4. #4
    Membre éclairé
    Avatar de divxdede
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    525
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 525
    Points : 844
    Points
    844
    Par défaut
    pour le nom de la méthode c'est kif kif avec getMethodName() à la place de getClassName()

    pour le n° de ligne, je ne sais pas comment faire.
    JBusyComponent, une API pour rendre occupé un composant swing.
    SCJP Java 6.0 (90% pass score)

  5. #5
    Membre éprouvé
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Points : 935
    Points
    935
    Par défaut
    il faut regarder du coté de Stack

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String name = ((e.getStackTrace())[1]).getMethodName();

    voir http://java.sun.com/j2se/1.4.2/docs/...ceElement.html

  6. #6
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Points : 1 937
    Points
    1 937
    Par défaut
    Plus simple, en cas de valeur non trouvee tu envoies une exception, lorsque tu catches cette exception tu peux en afficher la stacktrace, dedans tu verras l'appelant...

    En plus c'est une methode que tu peux laisser en place pour la suite afin de verifier qu'il n'y a pas de mauvaise utilisation de ta classe.

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/05/2009, 11h59
  2. Réponses: 2
    Dernier message: 06/12/2005, 09h41
  3. Réponses: 4
    Dernier message: 27/06/2005, 19h26
  4. Réponses: 6
    Dernier message: 27/05/2005, 15h43
  5. Réponses: 1
    Dernier message: 12/05/2004, 19h02

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