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 :

Conversion Enum <-> byte


Sujet :

Langage Java

  1. #1
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 46
    Par défaut Conversion Enum <-> byte
    J'essaye d'envoyer un type énuméré dans des datagrammes UDP.

    L'énumération est définie ainsi :

    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
    public enum PacketType {
     
        PT_UNKNOWN ((byte)0),
        PT_MSG     ((byte)1),
        PT_DATA    ((byte)2);
     
        protected byte value;
     
        PacketType(byte value) {
            this.value = value;
        }
     
        public byte getValue() {
            return this.value;
        }
    }
    Pour écrire, pas de problème, je fais simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ByteBuffer buffer = ...;
     
    buffer.put(this.packetType.getValue());
    Mais pour lire depuis un ByteBuffer ??? Je récupère un byte avec buffer.get(), mais pas moyen de le convertir dans le typé énuméré correspondant

  2. #2
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Par défaut
    Bonjour,

    Solution non testée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PacketType packetType = new PacketType(buffer.get)

  3. #3
    Membre éprouvé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Par défaut
    Citation Envoyé par jowo
    Bonjour,

    Solution non testée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PacketType packetType = new PacketType(buffer.get)
    On n'instancie pas un enum.
    Les seuls instances qui existent sont celles définies dedans, et elles sont uniques.

  4. #4
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Par défaut
    +1 pour Satch

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PacketType packetType = PacketType.valueOf(buffer.get())

  5. #5
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,


    Avec la méthode valueOf() implémenté de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        public static PacketType valueOf(byte b) {
            for (PacketType packet : PacketType.values()) {
                if (packet.getValue()==b) {
                    return packet;
                }
            }
            // Aucune correspondance
            throw new IllegalArgumentException("Valeur incorrect : " + b);
        }
    a++

  6. #6
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 46
    Par défaut
    J'avais pensé à surcharger ValueOf mais je voyais pas comment faire.

    Merci beaucoup !

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

Discussions similaires

  1. Conversion de tableau de byte en types primitifs
    Par soft0613 dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 14/03/2008, 15h14
  2. Conversion de char[] en byte[]
    Par Razgriz dans le forum Langage
    Réponses: 12
    Dernier message: 12/09/2007, 11h36
  3. Conversion Strinf file en Byte[]
    Par Tail dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 04/09/2006, 16h34
  4. [Conversion] Comment transformer un byte[] en String ?
    Par Elbarto dans le forum Langage
    Réponses: 8
    Dernier message: 02/01/2006, 01h37
  5. [Conversion]convertir int[] en bytes[]
    Par tony_big_guy dans le forum Langage
    Réponses: 5
    Dernier message: 02/05/2005, 15h47

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