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 :

[java 5]utiliser un type enum en paramètres


Sujet :

Langage Java

  1. #1
    Membre actif Avatar de MicroPuce
    Inscrit en
    Mai 2004
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 262
    Points : 212
    Points
    212
    Par défaut [java 5]utiliser un type enum en paramètres
    Salut,
    Je voudrais "transformer" un type enum (java 5) quelconque en une chaine de caractere avec un format spécifique.
    Je pensais definir une méthode static dans une classe utilitaire du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public String enumToString(???? myEnum){
      ...
    }
    Mais le souci, c'est que je sais pas ce que je vais mettre comme type pour le parametre, il semblerait que le type "enum" soit interdit, comment je devrais faire?

  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,


    Il suffit d'utiliser le type de ton enum...

    Mais perso je mettrais plutôt cette méthode dans ton enum justement.
    Au fait que devras renvoyer cette méthode ? As-tu un exemple ?

    a++

  3. #3
    Membre actif Avatar de MicroPuce
    Inscrit en
    Mai 2004
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 262
    Points : 212
    Points
    212
    Par défaut
    Si j'utilise le type de mon enum, alors je devrai réecrire autant de méthode enumToString que j'ai d'enum differents.
    L'idée était de convertir n'importe quel enum en une chaine, alors que si je l'integre directement dans l'enum, je suis bon pour ré-ecrire à chaque fois la méthode en question.
    Pitit exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public enum Rank { DEUCE, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING, ACE }
    public enum Suit { CLUBS, DIAMONDS, HEARTS, SPADES }
    Ma méthode me retournerait (format propriétaire de mon appli) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [DEUCE:THREE:FOUR:...:KING: ACE]
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [CLUBS:DIAMONDS:HEARTS:SPADES]
    Et on pourrait pas utiliser l'heritage (je sais pas si ça s'applique aux enum )? Une superEnum qui définit la méthode et dont toutes mes enums "String-able" hériteraient.

  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
    Il n'y a pas d'héritage avec les enums, car cela casserait la logique des enums (liste d'élément fini).

    Mais je comprend mieux ton besoin : tu ne veux pas afficher la valeur d'un élément d'une enum, mais toutes les valeurs de l'enum. Dans ce cas une méthode statique est bien le meilleur choix.

    le plus simple serait de passer par l'introspection et la méthode getEnumConstants. Pour cela il te faudra utiliser le type de ton enum en paramètre (Rank.class 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
    15
    	public static String enumToString(Class<? extends Enum> enumType) {
    		StringBuilder builder = new StringBuilder();
    		boolean first = true;
    		builder.append("[");
    		for (Enum e : enumType.getEnumConstants()) {
    			if (first) {
    				first = false;
    			} else {
    				builder.append(":");
    			}
    			builder.append( e );
    		}
    		builder.append("]");
    		return builder.toString();
    	}
    Le type du paramètre utilise les generics afin d'interdire d'utiliser un type qui ne correspond pas à une enum (toutes les enums hérite de la classe Enum). Ensuite on récupère toutes les valeurs de cette enum et on formate la chaine...

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String ranks = enumToString(Rank.class);
    String suits = enumToString(Suit.class);
    a++

Discussions similaires

  1. Type "enum" en java
    Par mazodo dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 12/04/2010, 14h53
  2. Utiliser un type enum(jdk5) avec Axis
    Par enzoenzo dans le forum Services Web
    Réponses: 6
    Dernier message: 10/02/2010, 10h48
  3. Réponses: 22
    Dernier message: 03/01/2008, 22h42
  4. Type String* en paramètre...
    Par Invité dans le forum MFC
    Réponses: 4
    Dernier message: 24/02/2004, 19h48
  5. utilisation du type DATE d'interbase
    Par dibak dans le forum InterBase
    Réponses: 4
    Dernier message: 05/01/2004, 15h03

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