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][singleton] introspetion de classe à singleton


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Avatar de Jaxofun
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 108
    Par défaut [introspection][singleton] introspetion de classe à singleton
    Bonjour !

    J'ai un ensemble de classe à singleton (voir pattern singleton) ayant la meme interface commune.

    Une méthode ayant pour parametre le nom(path+nom) en String de la classe à singleton doit renvoyer une instance de celle ci (c'est à dire sont singleton).
    La méthode generique pour recuperer le singleton de chacune de ces classe est getInstance().
    De ce fait la methode newInstance() de java.lang.reflect.Class ne peut pas etre utilisé.

    Comment puis-je m'y prendre ? Merci !

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2005
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2005
    Messages : 64
    Par défaut
    Salut,

    Pour obtenir une instance de ta classe, sachant que tu ne peux utiliser newInstance(), tu dois appeler la méthode getInstance() de ta classe singleton.

    Pour cela, il faut :
    - à partir de ta classe, récupérer la méthode, via la méthode "getMethod(...)" de la classe java.lang.Class
    - Exécuter la méthode via la méthode "invoke(...)" de la classe java.lang.Method

  3. #3
    Membre confirmé
    Avatar de Jaxofun
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 108
    Par défaut
    Oui, j'avais trouvé cette soluce mais je n'arrive pas à l'appliquer !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Class maclasse=Class.forName(classeName);
    Method m = maclasse.getClass().getMethod("getInstance",null);
    instance = m.invoke(null,null);
    J'obtient une erreur sur la deuxième ligne, comme si ma classe n'avait pas cette méthode :
    java.lang.NoSuchMethodException

  4. #4
    Membre confirmé
    Avatar de Jaxofun
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 108
    Par défaut
    Ne serait ce pas parcequ'il tente d'executer la méthode "getInstance()" de la classe "Class" (qui bien sur ne contient pas cette méthode) et non de la classe "classeName" ?

  5. #5
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    On dirait bien en effet.

  6. #6
    Membre confirmé
    Avatar de Jaxofun
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 108
    Par défaut
    Alors quel syntaxe dois-je adopter pour recuperer ma classe a partir d'un string et executer sa méthode getInstance() ?

  7. #7
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Ben :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Class maclasse = Class.forName(classeName);
    Method m = maclasse.getMethod("getInstance", null);
    instance = m.invoke(null, null);
    Sans le getClass().

  8. #8
    Membre confirmé
    Avatar de Jaxofun
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 108
    Par défaut
    Merci Gfx, ca fonctionne beaucoup mieux comme cela !

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

Discussions similaires

  1. appelle d'une classe singleton
    Par LeXo dans le forum Langage
    Réponses: 3
    Dernier message: 27/05/2007, 12h19
  2. Vecteurs non remplis, et classe Singleton.
    Par Floréal dans le forum SL & STL
    Réponses: 8
    Dernier message: 23/05/2007, 09h28
  3. Réponses: 14
    Dernier message: 02/02/2006, 18h32
  4. Implemetation de la classe Singleton
    Par lepoutho dans le forum C++
    Réponses: 6
    Dernier message: 20/08/2005, 11h46
  5. fonctionnement de la classe Singleton
    Par lepoutho dans le forum C++
    Réponses: 11
    Dernier message: 04/08/2005, 09h28

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