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 :

enumeration en java


Sujet :

Langage Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Points : 50
    Points
    50
    Par défaut enumeration en java
    Voici une classe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class Constantes
    2.     {
    3.          public static final int nombre1 = 13;
    4.          public static final int nombre2 = 55;
    5.          public static final int nombre3 = 21;
    6.          public static final int nombre4 = 30;
    7.     };
    Le point virgule à la fin veut dire que ce n' est pas une classe. Mais plutôt une énumération.

    Vrai ou faux ?
    C'est à force de programmer qu'on devient un bon programmeur

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par Nayila Voir le message
    Voici une classe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class Constantes
    2.     {
    3.          public static final int nombre1 = 13;
    4.          public static final int nombre2 = 55;
    5.          public static final int nombre3 = 21;
    6.          public static final int nombre4 = 30;
    7.     };
    Le point virgule à la fin veut dire que ce n' est pas une classe. Mais plutôt une énumération.

    Vrai ou faux ?
    Je veux parler du point virgule après l' accolade fermante ligne 7
    C'est à force de programmer qu'on devient un bon programmeur

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 52
    Points : 63
    Points
    63
    Par défaut
    Faux, le point virgule ne signifie rien dans l'exemple donnée.
    Fonctionne très bien sans le point virgule.
    Cet exemple déclare une classe privée contenant des constantes (final) public statique donc accessible par le code NomDeLaClasse.NomDeLaVariableStatique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int i = Constantes.nombre1

  4. #4
    Invité1
    Invité(e)
    Par défaut
    Si t'utilise le mot clé "class" je vois mal comment ça peut ne pas être une classe ! Java est, comme tout langage qui se respecte, cohérent.
    Pour les enums, c'est le mot clé "enum" et ça ne s'utilise pas de cette façon.
    Mais je pense qu'une classe interne privée peut être utilisée à la place d'une enum.

  5. #5
    Membre averti Avatar de Bezout
    Profil pro
    Développement
    Inscrit en
    Septembre 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Développement

    Informations forums :
    Inscription : Septembre 2003
    Messages : 234
    Points : 305
    Points
    305
    Par défaut
    En plus ce n'est pas une énumération, c'est juste une liste de constantes.

    Pour faire des enums en Java 1.4 on s'y prend autrement : avec un constrcuteur privé et des membres static.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 52
    Points : 63
    Points
    63
    Par défaut
    Citation Envoyé par Bezout Voir le message
    En plus ce n'est pas une énumération, c'est juste une liste de constantes.

    Pour faire des enums en Java 1.4 on s'y prend autrement : avec un constrcuteur privé et des membres static.
    ou avec une interface.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Points : 50
    Points
    50
    Par défaut
    Voici ce que j'ai vu sur ce site.

    Jusqu'à la version 1.4, la façon la plus pratique pour palier au manque du type enum était de créer des constantes dans une classe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class MonStyle 
    { 
         public static final int STYLE_1 = 1; 
         public static final int STYLE_2 = 2; 
         public static final int STYLE_3 = 3; 
         public static final int STYLE_4 = 4; 
         public static final int STYLE_5 = 5; }

    Le principal inconvénient de cette technique est qu'il n'y a pas de contrôle sur la valeur affectée à une donnée surtout si les constantes ne sont pas utilisées.

    De quel contrôle s'agit-il ? Je ne comprends pas. SI une variable est de type int, il est clair qu' on ne peut pas lui affecter n'importe quelle valeur. Puisque le compilateur rejette toute valeur inadéquate.
    C'est à force de programmer qu'on devient un bon programmeur

  8. #8
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Bonjour,
    Non, le problème vient du fait qu'on peut lui affecter une valeur hors valeurs prédéfinies, genre 6 ou -12457 par exemple. Et là, ça ne correspond à aucun style prédéfinie.

    Tu n'auras pas ce problème en y allant avec les enums.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par djo.mos Voir le message
    Bonjour,
    Non, le problème vient du fait qu'on peut lui affecter une valeur hors valeurs prédéfinies, genre 6 ou -12457 par exemple. Et là, ça ne correspond à aucun style prédéfinie.

    Tu n'auras pas ce problème en y allant avec les enums.
    Comprends toujours pas. Dans une énumération aussi on peut utiliser n'importe quelle valeur.
    En plus de ça, si on veut se limiter à un itervelle, y a qu' à le définir même avec les constantes (variables final )
    C'est à force de programmer qu'on devient un bon programmeur

  10. #10
    Membre confirmé Avatar de T`lash
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Saint-Pierre-Et-Miq.

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Septembre 2007
    Messages : 381
    Points : 519
    Points
    519
    Par défaut
    En fait une enum est une classe ; c'est juste une syntaxe particulière.

    On peut même ajouter des méthodes à une énumération comme ceci par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        public  static enum Type{
            FATAL("fatal"),
            WARNING("warning"),
            RELOAD("reload"),
            EXIT("exit"),
            PROTOCOL_ERROR("protocol-error"),
            ERROR("error");
     
            private final String value;
            Type(String value){
                this.value = value;
            }
            public String value(){ return this.value; }
        }

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Points : 50
    Points
    50
    Par défaut
    Je ne vois toujours pas en quoi les enum diiffèrent d' une classe de constantes.
    C'est à force de programmer qu'on devient un bon programmeur

  12. #12
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Bonjour,
    Citation Envoyé par Nayila Voir le message
    Comprends toujours pas. Dans une énumération aussi on peut utiliser n'importe quelle valeur.
    Non, pas du tout. Si t'as un exemple sous la main, merci de le montrer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public enum Season {
      SPRING, SUMMER, AUTUMN, WINTER;
    }
     
    Season x;
    J'aimerais bien voir comment tu pourras affecter à x quelque chose d'autre que les 4 valeurs prédéfinies.

    Citation Envoyé par Nayila Voir le message
    En plus de ça, si on veut se limiter à un itervelle, y a qu' à le définir même avec les constantes (variables final )
    Comment ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class Season {
      public static final int SPRING=1;
      public static final int SUMMER=2;
      public static final int AUTUMN=3;
      public static final int WINTER=4;
    }
     
    int x = Season.SUMMER;
    x=74587;//<-Là, c'est pas drôle du tout
    Comment tu pourras empêcher l'utilisateur d'affecter n'importe quoi à x définie de cette façon ?

  13. #13
    Membre averti Avatar de Bezout
    Profil pro
    Développement
    Inscrit en
    Septembre 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Développement

    Informations forums :
    Inscription : Septembre 2003
    Messages : 234
    Points : 305
    Points
    305
    Par défaut
    Citation Envoyé par maisonneuve01 Voir le message
    ou avec une interface.
    AH ? Comment ?

  14. #14
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public enum Season {
      SPRING, SUMMER, AUTUMN, WINTER;
    }
     
    Season x;
    Il y a toujours le cas stupide du x == null, rarement pris en compte car "c'est une énumération, ça a toujours l'une des valeurs définies". Donc voilà une autre valeur que les 4 citées ^^

  15. #15
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Bezout Voir le message
    AH ? Comment ?
    Lorsque tu utilises seulement des constantes public static final, tu peux simplement utiliser une interface. Le seul intérêt étant que le public static final est implicite et peut donc être omis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public interface MonStyle 
    { 
         int STYLE_1 = 1; 
         int STYLE_2 = 2; 
         int STYLE_3 = 3; 
         int STYLE_4 = 4; 
         int STYLE_5 = 5;
    }
    Citation Envoyé par dingoth Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public enum Season {
      SPRING, SUMMER, AUTUMN, WINTER;
    }
     
    Season x;
    Il y a toujours le cas stupide du x == null, rarement pris en compte car "c'est une énumération, ça a toujours l'une des valeurs définies". Donc voilà une autre valeur que les 4 citées ^^
    Le x==null a un autre sens différent qui est l'absence de valeur...



    a++

  16. #16
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    Va dire ça à mes collègues

  17. #17
    Membre habitué Avatar de Celeborn
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 133
    Points : 156
    Points
    156
    Par défaut
    Le point virgule à la fin signifie que tu as une instruction vide. Certain IDE te le signaleront en warning. Tu pourrais en mettre une 100aine d'affilé que ca changerais rien !

  18. #18
    Membre averti Avatar de Bezout
    Profil pro
    Développement
    Inscrit en
    Septembre 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Développement

    Informations forums :
    Inscription : Septembre 2003
    Messages : 234
    Points : 305
    Points
    305
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Lorsque tu utilises seulement des constantes public static final, tu peux simplement utiliser une interface. Le seul intérêt étant que le public static final est implicite et peut donc être omis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public interface MonStyle 
    { 
         int STYLE_1 = 1; 
         int STYLE_2 = 2; 
         int STYLE_3 = 3; 
         int STYLE_4 = 4; 
         int STYLE_5 = 5;
    }
    a++
    Nous sommes d'accord, moi je parlais d'une vrai enumaration style 1.5 en java 1.4.

  19. #19
    Membre confirmé Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Points : 576
    Points
    576
    Par défaut
    Salut out le monde ^^
    J'en profite pour rebondir sur la déclaration de liste de constante : si on doit définir par exemple les jours de la semaine et qu'on veut pouvoir récupérer une valeur grace a un index, quel est le meilleur choix ?

    Par récupérer une constante grace a un index je veux dire: obtenir mardi avec :

  20. #20
    Membre confirmé Avatar de T`lash
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Saint-Pierre-Et-Miq.

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Septembre 2007
    Messages : 381
    Points : 519
    Points
    519
    Par défaut
    Citation Envoyé par JoloKossovar Voir le message
    Salut out le monde ^^
    J'en profite pour rebondir sur la déclaration de liste de constante : si on doit définir par exemple les jours de la semaine et qu'on veut pouvoir récupérer une valeur grace a un index, quel est le meilleur choix ?

    Par récupérer une constante grace a un index je veux dire: obtenir mardi avec :
    Il y a certainement encore mieux à faire, mais tu peux ajouter une méthode statique à ton énumération afin qu'elle te renvoie un jour à partir d'un index.

    De toute façon, l'enum est à utiliser à chaque fois que tu as une énumération à faire. Tu peux faire avec tout ce que tu fais avec les constantes statiques.

Discussions similaires

  1. Enumeration Java Warnings
    Par CliffeCSTL dans le forum Général Java
    Réponses: 5
    Dernier message: 08/06/2015, 18h11
  2. Réponses: 6
    Dernier message: 26/07/2012, 11h13
  3. crèer une enumeration en java
    Par wagui26 dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 20/01/2009, 15h10
  4. webcam : lire sur un port usb en c/c++ ou java. sous win. ?
    Par flo007 dans le forum Choisir un environnement de développement
    Réponses: 2
    Dernier message: 24/05/2002, 23h24
  5. Service de nommage java C++
    Par Anonymous dans le forum CORBA
    Réponses: 3
    Dernier message: 15/04/2002, 12h48

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