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

avec Java Discussion :

class enum dynamique !


Sujet :

avec Java

  1. #1
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 165
    Points : 137
    Points
    137
    Par défaut class enum dynamique !
    Bonjour,


    J'ai un Objet Couleur qui peut s'enrichire c'est à dire rajouter par exemple JAUNE en plus de vert et rouge.

    Comment faire ?

    Ne pas utiliser enum ?

    Mon Objet Couleur est instancié dans plusieurs classes.

    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
    public enum Couleur{
     
        ROUGE("rouge"),
        VERT("vert");
        private final String value;
     
        Couleur(String v) {
            value = v;
        }
     
        public String value() {
            return value;
        }
     
        public static Couleur fromValue(String v) {
            for (Couleur c : Couleur.values()) {
                if (c.value.equals(v)) {
                    return c;
                }
            }
        }
    }

  2. #2
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    Il y a je crois 65 millions de couleurs habituellement utilisées sur les écrans d'ordi, il est parfaitement possible de les énumérer toutes dans une enum, rien ne l'empêche.

    Quel est le problème ?
    Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
    Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.

  3. #3
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 165
    Points : 137
    Points
    137
    Par défaut
    Car les couleurs ne sont qu'un exemple.
    Je ne manipule aucune couleur.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 338
    Points : 402
    Points
    402
    Par défaut
    utilise une Map<String, Color> tel que Color est une classe =
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class Color {
      private String color;
      public Color(String c) { //... }
    }
    Cdlt

  5. #5
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    Bon je vais répondre de façon un peu plus constructive...

    Moi dans le cas d'énumération que on ne sait pas limiter à l'avance, je travaille de plus en plus avec les annotations.

    En effet, j'observe que l'enjeu principal n'est pas forcément de désigner dans le code de telles valeurs, car elles le sont plus souvent par le niveau utilisateur, mais par contre le problème du code est de les traiter. (je ne sais pas si je suis clair).

    Pour reprendre les couleurs, j'aurais :
    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
     
    @SurCouleur("orangeSépia")
    public void traiteOrangeSépia()
    {
    //... n'importe quoi...
    }
     
    @SurCouleur("jauneCitron", "bleuAzur")
    public void traiteCouleursCartesPostales()
    {
    }
     
    public void traiteAutresCouleurs()
    {
    }
    Et puis j'écris un processeur qui pour une classe donnée me donne la méthode correspondant à une couleur fonction de l'annotation. Et puis je déclenche cette méthode, évidemment.

    C'est un système très souple, aussi bien au niveau des contrôles possibles, de la liste énumérée, des méthodes de traitement, très adapté à tous les contextes où c'est en fait l'utilisateur (que ce soit l'utilisateur final, un administrateur, un configurateur par properties...) qui réalise l'énumération.
    Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
    Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.

  6. #6
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 165
    Points : 137
    Points
    137
    Par défaut
    Je n'ai jamais utilisé d'anotation.
    J'ai lu le cours ici
    Je vais voir tout ça.

    Merci


    Jeune et pourtant je me sens périmé

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 338
    Points : 402
    Points
    402
    Par défaut
    Citation Envoyé par gifffftane Voir le message
    Bon je vais répondre de façon un peu plus constructive...

    Moi dans le cas d'énumération que on ne sait pas limiter à l'avance, je travaille de plus en plus avec les annotations.

    En effet, j'observe que l'enjeu principal n'est pas forcément de désigner dans le code de telles valeurs, car elles le sont plus souvent par le niveau utilisateur, mais par contre le problème du code est de les traiter. (je ne sais pas si je suis clair).

    Pour reprendre les couleurs, j'aurais :
    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
     
    @SurCouleur("orangeSépia")
    public void traiteOrangeSépia()
    {
    //... n'importe quoi...
    }
     
    @SurCouleur("jauneCitron", "bleuAzur")
    public void traiteCouleursCartesPostales()
    {
    }
     
    public void traiteAutresCouleurs()
    {
    }
    Et puis j'écris un processeur qui pour une classe donnée me donne la méthode correspondant à une couleur fonction de l'annotation. Et puis je déclenche cette méthode, évidemment.

    C'est un système très souple, aussi bien au niveau des contrôles possibles, de la liste énumérée, des méthodes de traitement, très adapté à tous les contextes où c'est en fait l'utilisateur (que ce soit l'utilisateur final, un administrateur, un configurateur par properties...) qui réalise l'énumération.
    Ta solution est un peu complexe pour un problème simple et je ne vois pas en quoi elle est aussi dynamique puisque tes annotations sont en dur dans le code!! en plus les annotation s'appuie sur la reflection si je ne me trompe pas donc les performance sont pas le top.

  8. #8
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Effectivement, tout va dépendre de ce que veut ancrou.

    S'il veut que ce soit l'utilisateur du programme qui puisse ajouter dynamiquement des "couleurs", dans ce cas-là il faut passer par une HashMap sérialisée ou procédé similaire (fichier properties).

    Si au contraire, c'est le développeur qui est responsable de l'ajout des différentes valeurs, soit il ajoute chaque fois à la main les valeurs dans l'Enum, soit il utilise les annotations (très classe je trouve). Le mécanisme des annotations peut éventuellement être remplacé par une méthode abstraite dans l'enum.

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

Discussions similaires

  1. Une solution pour faire des enums dynamique ?
    Par n!co dans le forum Langage
    Réponses: 7
    Dernier message: 16/12/2006, 15h44
  2. Instanciation de class en dynamique
    Par Sakapatate dans le forum Langage
    Réponses: 3
    Dernier message: 19/10/2006, 16h45
  3. [C# 2.0] Comment créer une class enum ?
    Par Khrysby dans le forum C#
    Réponses: 3
    Dernier message: 18/10/2006, 11h42
  4. Enum dynamique
    Par TabrisLeFol dans le forum Langage
    Réponses: 2
    Dernier message: 15/02/2006, 15h43
  5. Trouver le Type d'une classe template dynamiquement ?
    Par Serge Iovleff dans le forum Langage
    Réponses: 3
    Dernier message: 23/09/2005, 17h48

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