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 :

[java.lang.class] Votre avis sur une portion de code


Sujet :

Langage Java

  1. #1
    Membre régulier Avatar de be_tnt
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 84
    Points
    84
    Par défaut [java.lang.class] Votre avis sur une portion de code
    Voilà je voudrais votre avis sur la méthode ci-dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Class gatewayMgrClass = Class.forName(jmsGatewayMgrClassName);
    Method getInstanceMethod = gatewayMgrClass.getMethod("getInstance", null);
    JMSOutgoingGatewayManager gatewayMgr = (JMSOutgoingGatewayManager)getInstanceMethod.invoke(null, null);
    Elle récupère le nom de la classe à utiliser lors de l'exécution du programme puis invoke la methode "getInstance" pour récupérer l'objet instancié de cette classe pour enfin l'invoquer.
    N'y a-t'il pas un autre moyen? est-ce que cela vous semble correct et du bon java?

    Merci d'avance!

  2. #2
    Membre habitué Avatar de xv-mnt
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2005
    Messages : 142
    Points : 178
    Points
    178
    Par défaut
    Il serait intéressant de connaître le contexte de ce code. Pour moi, c'est typiquement le code lié à une Factory pour obtenir une instance de gatewayMgrClass, où on utilise la reflexivité comme ici.
    Le code est valide, et il permet d'utiliser différentes implémentation de gatewayMgrClass, puisqu'on passe le nom de la classe à utiliser en paramètre, pour autant qu'on respecte une interface commune. Ici, par exemple, toute classe devrait implémenter la méthode getInstance().

    La reflexivité est par exemple utilisée dans les app serveurs pour instancier des DataSource.
    Tout le monde savait que c'était impossible à faire. Puis un jour quelqu'un est arrivé qui ne le savait pas, et il le fit (Winston Churchill)

  3. #3
    Membre régulier Avatar de be_tnt
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 84
    Points
    84
    Par défaut
    xv-mnt: ton analyse est correct. C'est pour permettre l'implémentation de différentes classes gatewayMgrClass. Il n'y a que la reflexivité pour faire ça?

  4. #4
    Membre régulier Avatar de be_tnt
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 84
    Points
    84
    Par défaut
    J'ai lu la FAQ refléxivité et apparemment ce code est bien fait :o)

Discussions similaires

  1. Votre avis sur une portion de code
    Par ninikkhuet dans le forum Langage
    Réponses: 7
    Dernier message: 29/10/2009, 13h33
  2. Votre avis sur une proposition de job
    Par plex dans le forum Emploi
    Réponses: 7
    Dernier message: 18/01/2007, 10h11
  3. [Programmation distribuée] Votre avis sur une archi
    Par Acarp47 dans le forum Plateformes (Java EE, Jakarta EE, Spring) et Serveurs
    Réponses: 7
    Dernier message: 29/06/2005, 14h01
  4. Votre avis sur une bannière animée developpez.com
    Par Marc Lussac dans le forum Evolutions du club
    Réponses: 14
    Dernier message: 02/02/2005, 07h52

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