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 :

Introspection, classes internes et getEnclosingClass


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de panda31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2003
    Messages : 670
    Par défaut Introspection, classes internes et getEnclosingClass
    Bonsoir à tous,

    Je cherche un moyen facile et rapide de récupérer par introspection toutes les méthodes, constructeurs et classes internes ainsi que leurs méthodes, constructeurs...... récursivement.

    Je sais trouver tout ce qui est dans la classe "primaire" mais je n'arrive même pas à trouver les classes internes.

    Mon prof du CNAM nous a dit d'utiliser getEnclosingClass mais je ne comprends pas trop son principe.

    Mon code:
    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
    18
    19
    20
     
    public class tryIntrospection {
        public static void main(String[] args) throws ClassNotFoundException{
            Class<?> classeMonnaie = Class.forName("fr.introspection.Monnaie");
            System.out.println("MIKA Nom de la classe : " + classeMonnaie.getSimpleName());
     
            Method[] methodes = classeMonnaie.getDeclaredMethods();
            for (Method m : methodes){
                System.out.println("Methode de la classe : " + m.getName());
            }
     
            Constructor[] constructeurs = classeMonnaie.getConstructors();
            for (Constructor c : constructeurs){
                System.out.println("Constructeur de la classe : " + c);
            }
     
            Class<?> innerClasse = classeMonnaie.getEnclosingClass();
            System.out.println("\nNom de la classe interne de Monnaie : " + innerClasse);
        }
    }
    Le morceau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            Class<?> innerClasse = classeMonnaie.getEnclosingClass();
            System.out.println("\nNom de la classe interne de Monnaie : " + innerClasse);
    m'affiche
    Nom de la classe interne Monnaie : null
    Moi pas content...


    J'ai beau éplucher les bouquins de java, les cours, écumer le web, je ne trouve pas grand chose sur ce sujet pourtant passionnant

    Merci d'avance à tous ceux qui essaieront de m'aider ou me diriger vers une bonne doc (en français c'est possible ? ).
    Michaël Mary
    Consultant PLM dans une société de conseil toulousaine
    Auditeur CNAM-IPST depuis septembre 2008
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."
    John F. Woods
    mon cv et mon domaine et mon blog
    Aucune question technique par MP, svp

  2. #2
    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,


    C'est l'inverse : getEnclosingClass() retourne la classe de premier niveau si la classe courante est une classe interne...

    Pour récupérer les types internes (classes, interface, enum, annotation) tu doit utiliser getClasses() ou getDeclaredClasses(). La première ne renvoi que les types public en incluant ceux hérités des classes parents, alors que le second renvoi tous les types quel que soit leurs visibilités, mais ne s'occupe pas de la classe parente...

    Pour la doc en français tu as ce tutoriel : Introspection en JAVA, présentation de l'API Reflection
    Mais la javadoc est un passage obligatoire qui s'avère très pratique : http://javasearch.developpez.com/j2s...ang/Class.html


    a++

  3. #3
    Membre émérite
    Avatar de panda31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2003
    Messages : 670
    Par défaut Merci
    Merci beaucoup. C'est justement grâce à la javadoc que je me suis mis à douter de l'énoncé de mon prof.

    Résolu !
    Michaël Mary
    Consultant PLM dans une société de conseil toulousaine
    Auditeur CNAM-IPST depuis septembre 2008
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."
    John F. Woods
    mon cv et mon domaine et mon blog
    Aucune question technique par MP, svp

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

Discussions similaires

  1. [Timer] Classes internes et actionEvent
    Par smag dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 04/07/2005, 06h51
  2. Heritage de classe avec classes internes
    Par Regis.C dans le forum Langage
    Réponses: 11
    Dernier message: 27/04/2005, 12h19
  3. [heritage] etendre une classe interne en dehors du package
    Par ChristopheH dans le forum Langage
    Réponses: 2
    Dernier message: 11/10/2004, 14h15
  4. [Débutant][Conception] Erreur avec une classe interne
    Par Devil Redneck dans le forum Général Java
    Réponses: 5
    Dernier message: 11/06/2004, 15h45
  5. [Thread] Erreur dans une classe interne
    Par totof2308 dans le forum Général Java
    Réponses: 5
    Dernier message: 03/06/2004, 08h15

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