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 :

Utilisation d'un EnumSet


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 206
    Par défaut Utilisation d'un EnumSet
    Bonjour à tous. J'utilise les EnumSet de la façon suivante:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    enum StokesParameter {
     
        I, //!< Standard stokes parameters I
        Q, //!< Standard stokes parameters Q
        U, //!< Standard stokes parameters U
        V, //!< Standard stokes parameters V
        RR, //!< Circular correlation product RR
        RL, //!< Circular correlation product RL
        LR, //!< Circular correlation product LR
        LL, //!< Circular correlation product LL
    };
     
    EnumSet<StokesParameter> Stokes = EnumSet.range(StokesParameter.I, StokesParameter.V);
    Pourquoi je ne peux pas ensuite assigner une valeur à l'EnumSet de cette manière ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StokesParameter test = Stokes.I;
    Dans tous les cas vous avez sûrement compris ce que je veux faire. Si vous connaissez une manière d'y parvenir, n'hésitez pas à m'en faire part

  2. #2
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Ce n'est pas possible ... pour une raison simple : un EnumSet est modifiable.

    Par contre tu peux le faire avec une double enum, si tu veux que ça soit vraiment compile-safe :

    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
    26
    27
    28
    29
    30
     
    	enum StokesParameter {
     
    	    I, //!< Standard stokes parameters I
    	    Q, //!< Standard stokes parameters Q
    	    U, //!< Standard stokes parameters U
    	    V, //!< Standard stokes parameters V
    	    RR, //!< Circular correlation product RR
    	    RL, //!< Circular correlation product RL
    	    LR, //!< Circular correlation product LR
    	    LL, //!< Circular correlation product LL
    	};
     
    	enum Stokes {
     
    		I(StokesParameter.I),
    		Q(StokesParameter.Q),
    		U(StokesParameter.U),
    		V(StokesParameter.V);
     
    		public final StokesParameter parameter;
     
    		private Stokes (StokesParameter parameter) {
    			this.parameter = parameter;
    		}
     
     
    	}
     
    	StokesParameter test = Stokes.I.parameter;

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 206
    Par défaut
    Merci de ta réponse

    Par contre je n'ai pas compris pourquoi on ne peut pas faire récupérer ce paramètre depuis l'EnumSet. Quelle est leur utilité si on ne peut pas s'en servir en tant qu'énumération ?

  4. #4
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    C'est un Set très performant. Je te cite la javadoc :

    Enum sets are represented internally as bit vectors. This representation is extremely compact and efficient. The space and time performance of this class should be good enough to allow its use as a high-quality, typesafe alternative to traditional int-based "bit flags." Even bulk operations (such as containsAll and retainAll) should run very quickly if the specified collection is also an enum set.

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  2. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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