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 :

[Reflection]parser une classe de java.


Sujet :

API standards et tierces Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 12
    Par défaut [Reflection]parser une classe de java.
    Bon soir a ts,
    Ma quiestion est la suivante:
    je me demandes s'il ya un API qui parse les classes de java comme le font les parsers pour XML.
    je m'explique: par exemple la structure d'un fichier *.java est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
      package <nom du paquet>
       import..
       .
       .
       class <nom de la classe> {
       .
       .
       .
       }
    ainsi de suite.
    ce que je cherche est un API qui recupère les differentes parties de la classe et le garde dans un objet, pr pouvoir les recuperer plus tard avec des getters.
    par exemple
    _objClasse.getPackageName(); // me retourne le nom du paquet.

    Merci.

  2. #2
    Membre chevronné
    Inscrit en
    Août 2005
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 352
    Par défaut
    http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Class.html

  3. #3
    Rédacteur
    Avatar de lunatix
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2002
    Messages
    1 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 960
    Par défaut
    et la FAQ

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 50
    Par défaut
    tu peux faire une recherche sur l'api de réflection!
    java.lang.reflect
    +++
    vandoor

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 12
    Par défaut
    Merci a tous
    [lunatix] avant d'envoyer le poste g cherché par tt avec google et aussi sur le site, mais je ne savais pas comment chercher.
    Je recevais des resultats qui n'ont rien a voir.

    Merci encore une fois.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 12
    Par défaut
    G un autre probleme,
    comment peut-on recuperer la valeur d'un "field" dans une classe "abstract".
    Par ce que avec la methode ".get(object)" il faut instancier la classe, qui est impossible dans ce k.

    Merci.

  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 burkan21
    comment peut-on recuperer la valeur d'un "field" dans une classe "abstract".
    Par ce que avec la methode ".get(object)" il faut instancier la classe, qui est impossible dans ce k.
    Il y a deux cas :

    • Si le champs est static, il suffit de passer null à la méthode get(Object) puisqu'un champs statique n'est rataché à aucune instance....
    • Sinon tu dois obligatoirement avoir une instance valide de l'objet (une classe fille par exemple), sinon cela n'a aucun sens...


    a++

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 50
    Par défaut
    tu peux je penses en récupérant l'instance de ta classe.
    Mais tu ne peux pas invoquer ta méthode, tu ne peux linvoquée que sur un objet instancié.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Class instance = MaClass.class;
    Method methode = instance.getDeclaredMethod("nomMethode",Object[] parametres);

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 12
    Par défaut
    j'ai utilisé le null et ça a fonctionné tres bien.



    merci.

  10. #10
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 897
    Billets dans le blog
    54
    Par défaut
    Si tu utilises Java 5 tu peux meme faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Class instance = MaClass.class; 
    Method methode = instance.getDeclaredMethod("nomMethode");
    Car toutes ces méthodes permettant de faire de la réflexion utilisent maintenant des varargs.
    Pour la même raison quand on a des arguments à passer plus la peine d'instancier un tableau, autant mettre tous paramètres séparés par des virgules.

    Ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Method methode = instance.getDeclaredMethod("nomMethode", Integer.class, String.class, Toto.class);
    PS : au fait c'est un Class[] pas un Object[] qu'il faut passer.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

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

Discussions similaires

  1. Cloner une classe en Java
    Par Benbanana dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 24/02/2010, 23h57
  2. [C#] Utiliser une classe de JAVA dans C#
    Par Mickael23 dans le forum C#
    Réponses: 4
    Dernier message: 22/05/2009, 19h44
  3. [API Reflection] Supprimer une classe du cache
    Par aurelienDC dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 13/04/2009, 19h25
  4. Probleme avec la recherche directe de methodes sur une Class (API java.lang.reflect)
    Par CyberChouan dans le forum API standards et tierces
    Réponses: 14
    Dernier message: 25/01/2007, 17h12
  5. [PL/SQL]Appel d'une classe/méthode java
    Par marsup54 dans le forum SQL
    Réponses: 4
    Dernier message: 30/06/2004, 16h44

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