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 :

conception d'un appel dynamique aux classes


Sujet :

Langage Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 155
    Points : 77
    Points
    77
    Par défaut conception d'un appel dynamique aux classes
    Bonjour,

    Je souhaiterais pouvoir lancer une certaine classe après lecture d'un fichier xml. Pour l'instant, je lis le fichier xml et j'utilise un switch pour lancer une méthode de la classe (toutes les classes pouvant être lancées comportent cette méthode). L'utilisation d'un switch est source d'erreur et n'est pas du tout dynamique dans le sens que si je souhaite rajouter une nouvelle classe, je dois également changer le code source du switch alors qu'il serait préférable que la classe soit intégrée dynamiquement lors de l'exécution.

    Un moyen de faire autrement ?
    Si le coté dynamique n'est pas faisable mais que l'utilisation du switch est remplacée par autre chose alors je prends!

    Exemple :
    Classes à appeler
    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
    21
    22
    23
    24
    25
     
    public abstract class Regle{
    private int id;
    public void appliquer();
    }
     
    public class Regle1 extends Regle{
    ...
    id=1;
    ...
    }
     
    public class Regle2 extends Regle{
    ...
    id=2
    ...
    }
     
    ....
     
    public class Regle150 extends Regle{
    ...
    id=150
    ...
    }
    Fichier xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <regles>
         <regle id="1"/>
         <regle id="2"/>
         ...
         <regle id="150"/>
    </regles>
    le switch à changer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Regle regle;
    switch(id)
    {
       case 1: regle = new Regle1(); break;
       case 2: regle = new Regle2(); break;
       ...
    }
    Ici on voit qu'il n'y a pas le case 150 donc la regle 150 ne sera pas lancée!

    PS: je travaille en java

  2. #2
    Membre actif Avatar de g0up1l
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 341
    Points : 294
    Points
    294
    Par défaut
    et oui, l'éternel problème du constructeur virtuel...tellement pratique...pour construire un objet sans connaître sa classe.
    Malheureusement, ça n'existe pas

    Une solution élégante serait de passer par l'objet Class.
    Tu pourrais faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Regle regle = Class.forName("Regle"+id).getConstructor().newInstance();
    ( non compilé )

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 155
    Points : 77
    Points
    77
    Par défaut
    Merci de ta réponse. Cette solution peut être pas mal. J'aimerais avoir d'autres avis pour avoir un maximum de solutions et choisir la meilleure.

Discussions similaires

  1. Appel dynamique des classes [Reflection]
    Par chental dans le forum Qt
    Réponses: 7
    Dernier message: 23/11/2009, 07h07
  2. Appel dynamique de classe
    Par lannel dans le forum Général Python
    Réponses: 2
    Dernier message: 07/04/2008, 09h41
  3. probleme d'appel aux classes
    Par alphonse62 dans le forum Interfaces Graphiques en Java
    Réponses: 7
    Dernier message: 31/05/2007, 19h46
  4. Réponses: 5
    Dernier message: 30/01/2007, 13h23
  5. [POO] Appels Dynamiques à des classes
    Par Korko Fain dans le forum Langage
    Réponses: 3
    Dernier message: 04/12/2006, 09h26

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