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 :

Reflection en Java


Sujet :

Langage Java

  1. #1
    Membre actif
    Inscrit en
    Novembre 2010
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 24
    Par défaut Reflection en Java
    bonjour ,


    si quelqu'un peut m'aider svp ,


    je voulais savoir si une classe définie comme sa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public class X{
     
    public void run()
     
    }
    si on la compile sa génère un fichier X.class

    maintenant si on veut appeler dynamiquement ( réélection java.lang.reflect ) la méthode run() et l'utiliser comme méthode run() d'un new thread ?

    est ce que c'est possible ?

    @ monsieur tchize : je serai ravie d'avoir l'avis d'un expert .

  2. #2
    Membre éclairé
    Inscrit en
    Février 2010
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 38
    Par défaut
    Hello,

    il faut au moins que t'ai une instance de X pour l'appeler.

    Après le code a cette tete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    X x = new X();
    Class<?> clazz = x.getClass();
    Method declaredMethod = clazz.getDeclaredMethod("run", new Class[]{});
    //invoque ta méthode sur ton objet ou tu veux
    declaredMethod.invoke(x, new Object[]{});

  3. #3
    Membre actif
    Inscrit en
    Novembre 2010
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 24
    Par défaut
    merci pour votre réponse ,

    just pour être sur , est ce que c'est possible de faire sa :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Thread  t = new Thread( new Runnable(){
     
    @Override
     
    void run(){
    declaredMethod.invoke(x, new Object[]{});
    }
     
    }).start();

  4. #4
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 133
    Par défaut
    Si tu n'as pas d'instance de la classe X, tu peux aussi en créer une dynamiquement en récupérant un objet Constructor avec la méthode X.class#getConstructors().

    La méthode Constructor#newInstance() te permettra de récupérer une instance de X.

  5. #5
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 133
    Par défaut
    La méthode invoke lève plusieurs exceptions que ton IDE ou une Javadoc te rappelera.

    Et il faudra que la variable x et declaredMethod soient déclarées en dehors du bloc du thread avec l'attribut final.

Discussions similaires

  1. Reflection en Java (précisions)
    Par Thoder dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 07/05/2012, 16h59
  2. Reflect JAVA: Connaître dynamiquement le type primitif associé
    Par TravelMate dans le forum API standards et tierces
    Réponses: 11
    Dernier message: 08/08/2006, 23h07
  3. pb avec invoke de java.lang.reflect.
    Par sebastien2222 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 28/04/2006, 13h33
  4. [Reflection]parser une classe de java.
    Par burkan21 dans le forum API standards et tierces
    Réponses: 9
    Dernier message: 02/12/2005, 21h05
  5. [Reflection] Interpreter une chaine en une methode java
    Par shaun_the_sheep dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 09/10/2004, 15h11

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