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 :

[Stratégie][méthode static] recuperer le nom de la classe


Sujet :

Langage Java

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 525
    Par défaut [Stratégie][méthode static] recuperer le nom de la classe
    Dans une méthode non statique il est possible de faire un

    this.getClass().getName();

    lorsque je suis dans une méthode statique, que puis-je faire ?

  2. #2
    Membre expérimenté
    Inscrit en
    Juillet 2004
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 152
    Par défaut
    MyClass.class.getName()

  3. #3
    Membre émérite
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Par défaut
    MyClass.class.getName() ne marche pas de façon générique, car tu dois connaitre le nom de la classe courante, ce qui est un peu stupide entre nous sois dit: tu connais le nom de la classe et tu applique une méthode pour connaitre le nom de la classe ???

    Sinon pour info:

    dans this.getClass().getName(); le this est inutile car ghetClass() s'applique forcémment à l'instance en cours !!! Il ne faut pas employer this à toutes les sauces, seuls dans trois cas (je crois) sont utilisation est indispensable.

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 525
    Par défaut
    oui mais dans une méthode statique que je mette le this ou non
    je ne pourrai pas executer le getClass() puisque c'est une méthode non statique !! donc le contexte n'est pas bon.

  5. #5
    Membre émérite
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Par défaut
    Je te parle pas de ta méthode statique, c'était une remarque d'ordre général...

  6. #6
    Membre émérite
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Par défaut
    A mon avis la seule soltuion pour faire ça de façon générique, c'est de passer StackTraceElement et d'utiliser Throwable.getStackTrace();

    http://java.sun.com/j2se/1.4.2/docs/...Throwable.html

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

    Ce qui es à mon avis ultra couteux...

  7. #7
    Membre expérimenté
    Inscrit en
    Juillet 2004
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 152
    Par défaut
    Citation Envoyé par thibaut
    MyClass.class.getName() ne marche pas de façon générique, car tu dois connaitre le nom de la classe courante, ce qui est un peu stupide entre nous sois dit: tu connais le nom de la classe et tu applique une méthode pour connaitre le nom de la classe ???
    A moitié stupide, alors. Ca peut toujours être utile en cas de refactorisation.

  8. #8
    Membre émérite
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Par défaut
    C'est d'accord, à moitié stupide...

    parceque c'est ce que j'ai fait pour une de mes factory...

    Mais il y avait une raison précise: je ne voulais pas avoir des ClassNotFoundException, or en mettant le nom de la classe dans une chaîne de caratère ou dans un .properties, si je déplace la classe (et c'est fort probable, car mon projet est en cours de développement) WSAD met à jour les importations correctement mais les .properties ou les String seraient inchangées, donc source d'erreurs...

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 525
    Par défaut
    ok, pas de solution élégante.
    C pas grave, je vais mettre le nom de la classe en hard.
    merci

  10. #10
    Invité
    Invité(e)
    Par défaut Si si, une solution élégante
    http://www.rgagnon.com/javadetails/java-0402.html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    public class ClassFromStatic {
     
      public static void main(java.lang.String[] args) {
        someStaticMethod();
      }
     
      public static void someStaticMethod() {
        System.out.println
           ("I'm in " + new CurrentClassGetter().getClassName() + " class");
      }
     
      public static class CurrentClassGetter extends SecurityManager {
        public String getClassName() {
          return getClassContext()[1].getName();
        }
      }
    }
    Le tableau retourné par getClassContext() contient la liste des classes (ainsi, pour accéder à la classe fille directe : getClassContext()[2].

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

Discussions similaires

  1. Comment faire pour recuperer le nom de la class appelante
    Par zangets dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 03/10/2010, 14h56
  2. obtenir le nom de la classe dans une méthode static
    Par einboubou dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 13/11/2009, 16h46
  3. Réponses: 4
    Dernier message: 09/11/2006, 16h47
  4. Réponses: 6
    Dernier message: 27/07/2005, 09h06
  5. Recuperer le nom d'un fichier
    Par elvivo dans le forum C
    Réponses: 5
    Dernier message: 27/12/2002, 15h44

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