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 :

Une solution pour faire des enums dynamique ?


Sujet :

Langage Java

  1. #1
    Membre éprouvé
    Avatar de n!co
    Profil pro
    Inscrit en
    Février 2004
    Messages
    831
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 831
    Points : 936
    Points
    936
    Par défaut Une solution pour faire des enums dynamique ?
    Bonjour,

    Je viens de prendre connaissance des enum en java. C'est merveilleux comme solution pour simplifier l'ecriture du code et éviter les erreurs de codes.

    J'aimerais l'appliquer aux données "type" que l'on retrouve souvant dans un schema de base de données : type d'une voiture ou type de livre, ....
    Par contre pour ne pas brider l'ajout d'un nouveau type, il faudrait pouvoir ajouter une nouvelle entrée dynamiquement et cela le langage ne nous le permet pas (domage).

    Alors qu'elle solution interessante utilisez vous pour vous rapprocher du fonctionnement des énums et éviter les vulgaires "static final" ?

    Merci

  2. #2
    Membre confirmé Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Points : 510
    Points
    510
    Par défaut
    Mais même les static final sont dans le cadre de bases connues d'avance, non pas dans le cadre de traitements dynamiques, où l'on ne connait pas à l'avance le nom des colonnes.

    Il me semble que la question ne se pose pas, dès lors que l'on ne connait pas la base. On est de toutes façons dans le cadre d'un traitement général, où toutes les colonnes sont traitées pareil, on a simplement la notion de colonne, chacune étant indistincte par rapport à l'autre.

    Peut être pourrais-tu faire un traitement particulier selon le type de la colonne. Tu serais alors conduit à faire des enums selon les types de colonnes possibles, et on se retrouve dans le cas de repères connus et fixes dès la conception du programme.

    Moi j'ai à réfléchir sur le cas où des éléments sont pour partie connus, pour partie inconnus ; on peut en rajouter ou en retirer, quoi. Cela revient peut être à ce que tu penses. Je dois ajouter dynamiquement des traitements selon l'ajout d'éléments. Cela ressemble un peu à la notion de plugin. Malheureusement je n'ai pas encore réussi à trouver une solution que je trouve bien. Si tu as des idées...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 94
    Points : 102
    Points
    102
    Par défaut
    Moi j'ai à réfléchir sur le cas où des éléments sont pour partie connus, pour partie inconnus ; on peut en rajouter ou en retirer, quoi. Cela revient peut être à ce que tu penses. Je dois ajouter dynamiquement des traitements selon l'ajout d'éléments. Cela ressemble un peu à la notion de plugin. Malheureusement je n'ai pas encore réussi à trouver une solution que je trouve bien. Si tu as des idées...
    Je ne sais pas exactement ce que tu veux faire mais tu devrais pê aller voir du coté du design pattern Decorator.

  4. #4
    Membre éprouvé
    Avatar de n!co
    Profil pro
    Inscrit en
    Février 2004
    Messages
    831
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 831
    Points : 936
    Points
    936
    Par défaut
    Non je ne parlais pas des colonnes mais d'une table regroupant une liste non fini d'élément générique.
    Exemple : une table TYPE_LIVRE (type_id, type_nom) avec comme entrée : roman, policier, magazine, bd, ....

    Effectivement les "final static" ne sont pas plus dynamique. C'est en prenant connaissance du type enum que j'ai cru que s'ouvrait devant moins l'eldorado, alors que finalement c'est un complement du final static en ce qui concerne le typesafe.
    Apres plus de reflexion sur l'utilité de l'enum, je me rend compte que ma question n'a plus grand intéret (au sujet de l'enum)

    Pour mon problème je pense que la meilleure solution serait de faire une fabrique encapsulant un hashmap, avec comme clé le hashcode de l'objet et comme valeur la référence de l'objet. Si l'objet existe pas on le crée, sinon on recup ca ref.

    C'est juste pour le switch que je n'ai pas de solution pour simplifier les controles.

    Une idée ?

  5. #5
    Membre confirmé Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Points : 510
    Points
    510
    Par défaut
    Malheureusement je n'ai fait que des tentatives qui ne m'ont pas satisfaites : chaine de responsabilité, le pattern dont j'ai oublié le nom qui permet de faire le choix dynamique du pauvre sur les paramètres de méthodes, etc, etc. Le décorateur ne me semble pas fait pour ça, où alors j'ai mal compris le problème et sa solution.

    Bref j'utilise de bêtes chaines de if else, pas trés éléguantes ni très objet, mais qui me paraissent finalement le plus clair à maintenir et à comprendre.

    Mais je suis ouvert à toutes autres idées, car pour moi aussi c'est un problème non-résolu.

  6. #6
    Membre confirmé Avatar de yjuliet
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Août 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 362
    Points : 460
    Points
    460
    Par défaut
    C'est un ex adepte du C qui se met à parler, mais n'est-il pas possible, en Java de faire, comme on pouvait le faire en C, de passer en valeur d'une Hashmap, la référence (j'évite le terme de pointeur, en java) vers la fonction qui te retourne ce dont tu as besoin, que ce soit une liste de valeurs (possiblement dynamique, du coup), ou autres ?

  7. #7
    Membre éprouvé
    Avatar de n!co
    Profil pro
    Inscrit en
    Février 2004
    Messages
    831
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 831
    Points : 936
    Points
    936
    Par défaut
    Citation Envoyé par yjuliet
    C'est un ex adepte du C qui se met à parler, mais n'est-il pas possible, en Java de faire, comme on pouvait le faire en C, de passer en valeur d'une Hashmap, la référence (j'évite le terme de pointeur, en java) vers la fonction qui te retourne ce dont tu as besoin, que ce soit une liste de valeurs (possiblement dynamique, du coup), ou autres ?
    Si j'ai bien compris tu veux stocker la référence d'une fonction dans une hashmap ?
    - A ma connaissance, il n'y a pas moyen d'avoir accès a la référence d'une méthode en java (ou j'ai loupé qqs chose durant mes études).
    - Dans tous les cas, je ne vois trop ou tu veux en venir

  8. #8
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par N©O
    - A ma connaissance, il n'y a pas moyen d'avoir accès a la référence d'une méthode en java (ou j'ai loupé qqs chose durant mes études).
    En java, on réalise cela grâce au design pattern Command (par exemple, c'est ce que fait ActionListener).

Discussions similaires

  1. [VB6] load de shapes dans une classe ? (pour faire des contours)
    Par hpfx dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 07/06/2011, 14h59
  2. une solution pour faire du Html to PDF ?
    Par Kamishu dans le forum ASP.NET
    Réponses: 2
    Dernier message: 02/09/2008, 15h33
  3. Créer une entreprise pour faire des formations
    Par Jeff_p dans le forum Structure
    Réponses: 16
    Dernier message: 23/05/2008, 12h48
  4. [SQL] Récupération éventuelle d'une variable pour faire des tests
    Par mougeole dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 24/05/2006, 13h56
  5. utiliser des morceaux d'une image pour faire des boutons
    Par Battosaiii dans le forum Interfaces Graphiques en Java
    Réponses: 7
    Dernier message: 14/12/2005, 00h05

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