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 :

Parser une enum


Sujet :

avec Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 45
    Points : 39
    Points
    39
    Par défaut Parser une enum
    Bonjour,
    Je parcours un fichier xml puis je souhaite créer mes objet.
    Un de mes objet a un champ enum, je souhaite créer cet objet à partir d'un string.
    Petite illustration de mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    enum Type{
                A,
                B
    }
     
    class X {
        Type unType;
        public X(Type _unType) {
               unType = _unType;
        }
    }
    et donc dans mon main j'ai un truc comme ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String plop = RecupererInfo();
    X unX = new X(plop);
    J'aimerais donc pouvoir caster mon String plop en enum Type.
    J'espère avoir été claire, j'ai fais une recherche et quelqu'un parler de enum.parse() mais je n'ai rien trouver dans la doc...
    Merci pour toute réponse

  2. #2
    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
    Salut,


    Pour chaque type enum, tu disposes d'une methode static valueOf() permettant la conversion depuis une chaine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Type t = Type.valueOf("A");
    Attention la chaine doit être strictement identique au nom de l'enum


    a++

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    je profite de la présence d'adiGuba pour demander s'il y a un moyen quelconque de redéfinir la méthode valueOf parce que j'obtiens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    The enum ArticleProfil already defines the method valueOf(String) implicitly
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    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
    Non tu ne peux pas redéfinir valueOf(), tout comme values() (qui retourne toutes les valeurs de l'enum).

    Si tu as besoin d'une implémentation différentes il est préférable d'utiliser un autre nom



    De même tu ne peux pas non plus redéfinir certaines méthodes d'instances (clone, compareTo, equals, hashCode, finalize, name et ordinal).


    Tout ceci permet d'avoir des enums fiable et efficace



    a++

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Non tu ne peux pas redéfinir valueOf(), tout comme values() (qui retourne toutes les valeurs de l'enum).

    Si tu as besoin d'une implémentation différentes il est préférable d'utiliser un autre nom



    De même tu ne peux pas non plus redéfinir certaines méthodes d'instances (clone, compareTo, equals, hashCode, finalize, name et ordinal).


    Tout ceci permet d'avoir des enums fiable et efficace



    a++
    c'est ce que j'ai fait, mais c'est dommage dans le cas où on a une valeur par défaut...
    bon, ce n'est pas bien grave, j'arrive à faire sans

    merci à toi
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [XML] Parser une DTD?
    Par La Truffe dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 03/04/2007, 11h28
  2. [OCaml] Parser une ligne de commande
    Par Thanatos dans le forum Caml
    Réponses: 4
    Dernier message: 10/12/2004, 10h11
  3. Parser une chaine en shell script
    Par Gogoye dans le forum Linux
    Réponses: 10
    Dernier message: 19/07/2004, 17h49
  4. [DOM] parser une String pour en faire un document XML
    Par Fladnag dans le forum Format d'échange (XML, JSON...)
    Réponses: 9
    Dernier message: 29/03/2004, 11h04
  5. [langage] Continuer a parser une ligne
    Par D[r]eadLock dans le forum Langage
    Réponses: 5
    Dernier message: 30/09/2002, 18h49

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