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 :

Retourner le nom de la méthode où on se trouve


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2002
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2002
    Messages : 177
    Par défaut Retourner le nom de la méthode où on se trouve
    Bonjour,

    j'ai une demande peut-être un peu bizarre.

    J'aimerais pouvoir retourner le nom de la méthode où on se trouve.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void id1{
    Object objet = new Object();
    System.out.println(objet.getClass.getMethod.getName);
    }
    et j'obtiendrais "id1"

    Est-ce possible ??? j'ai regardé la méthode getMethods qui renvoient toutes les méthodes d'une classe mais ca ne m'est pas d'une grande aide.

    Merci d'avance

  2. #2
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Citation Envoyé par Bindy Voir le message
    Est-ce possible ??? j'ai regardé la méthode getMethods qui renvoient toutes les méthodes d'une classe mais ca ne m'est pas d'une grande aide.
    Tu peux commencer par regarder
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Thread.currentThread().getStackTrace();
    http://java.sun.com/j2se/1.5.0/docs/...getStackTrace()

    Le premier élement de la liste devrait contenir l'information que tu cherches... Mais peut-être qu'il existe une méthode plus propre pour trouver uniquement la méthode.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2002
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2002
    Messages : 177
    Par défaut
    merci pour l'info, mais c'est encore trop vague. Je cherche vraiment le retour du nom de la méthode uniquement.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Par défaut
    merci pour l'info, mais c'est encore trop vague.
    Et si tu faisais l'effort de creuser les pistes pertinentes qui te sont données ? Incroyable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // appeler ce fichier Test.java
     
    public class Test {
     
        public void id1() {
            System.out.println(Thread.currentThread().getStackTrace()[1].getMethodName());
        }
     
        public static void main(String[] args) {
            new Test().id1();
        }
    }

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2002
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2002
    Messages : 177
    Par défaut
    Citation Envoyé par Nicolas_75 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    /System.out.println(Thread.currentThread().getStackTrace()[1].getMethodName());
     
    }
    Excuse-moi, ce n'est pas de la mauvaise volonté, mais c'est le "getStackTrace()[1]" que je ne connaissais pas...

    merci

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2002
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2002
    Messages : 177
    Par défaut
    Petite question supplémentaire.

    Comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Thread.currentThread().getStackTrace()[1].getMethodName().
    getStackTrace() ne compile pas en version 1.4 de java, mais seulement en 1.6

    Quelqu'un connaît-il une astuce ??? merci d'avance

  7. #7
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Bindy Voir le message
    Excuse-moi, ce n'est pas de la mauvaise volonté, mais c'est le "getStackTrace()[1]" que je ne connaissais pas...
    Heu... Il s'agit simplement de l'accès à un élément du tableau !!!

    Citation Envoyé par Bindy Voir le message
    getStackTrace() ne compile pas en version 1.4 de java, mais seulement en 1.6

    Quelqu'un connaît-il une astuce ??? merci d'avance
    Créer une exception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new Throwable().getStackTrace()
    (c'est d'ailleurs ce que fait currentThread().getStackTrace()).


    Mais attention à la manière dont tu utilises cela : la génération du stacktrace est assez couteuse et pourrait poser des problèmes de perf si c'est fait un trop grand nombre de fois...

    a++

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2002
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2002
    Messages : 177
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Créer une exception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new Throwable().getStackTrace()
    (c'est d'ailleurs ce que fait currentThread().getStackTrace()).

    a++
    Euh excuse moi mais j'ai pas tout compris, je créé une nouvelle classe avec mon Exception ???

  9. #9
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Bindy Voir le message
    Euh excuse moi mais j'ai pas tout compris, je créé une nouvelle classe avec mon Exception ???
    Tu remplaces simplement Thread.currentThread().getStackTrace() par new Throwable().getStackTrace().

    a++

  10. #10
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2002
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2002
    Messages : 177
    Par défaut
    ok, merci beaucoup!

    Voilà ce que ca donne :
    avec java 1.6
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String nomMethode = Thread.currentThread().getStackTrace()[1].getMethodName();
    avec java 1.4
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String nomMethode = new Throwable().getStackTrace()[0].getMethodName();

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 13/01/2007, 18h33
  2. [POO] Comment retourner le nom d'un objet
    Par mkael29 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/09/2006, 06h47
  3. Méthode retournant le nom du fichier courant du Workspace
    Par couetbis dans le forum SWT/JFace
    Réponses: 14
    Dernier message: 20/07/2006, 11h05
  4. Réponses: 10
    Dernier message: 04/03/2006, 22h34
  5. Réponses: 7
    Dernier message: 03/12/2004, 12h40

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