435 votes

À l’aide de valeurs d’énumération en tant que littéraux de chaîne

Quelle est la meilleure façon d'utiliser les valeurs stockées dans une énumération que les littéraux de Chaîne?

Par exemple:

public enum Modes {
    some-really-long-string,
    mode2,
    mode3
}

Puis plus tard, je pouvais utiliser Mode.mode1 de retour de sa représentation sous forme de chaîne comme: "mode1". Sans avoir à l'appel, Mode.model.toString().

EDIT: de plus d'explications... Ce que j'aime, c'est quand les utilisateurs d'appeler certaines fonctions, ils ont besoin de spécifier un type de mode (à l'aide d'un exemple). Ainsi, au lieu de se souvenir de la longue chaîne qui un mode particulier est représenté comme, ils peuvent tout simplement Mode d'appel.mode1, par exemple.

EDIT: je suppose que la réponse est finalement elle ne peut pas être fait. Préférable d'utiliser une définition de classe avec des variables statiques, afin d'obtenir l'effet que je veux.

Thnx!

720voto

Michael J. Lee Points 4222

Tu peux pas. Je pense que vous avez trois options ici. Tous les trois offrent une solution, mais avec une approche légèrement différente...

Première option : Ajouter des propriétés dominante à votre enums

Option deux : utiliser statique finale au lieu d’enums :

Option trois : interfaces possèdent tous les domaines publics, statique et final :

513voto

Ryan Stewart Points 46960

Chaque enum a une name() et une méthode valueOf(String). La première renvoie le nom de chaîne de l’enum, et ce dernier donne la valeur enum dont le nom est la chaîne. Cela ressemble à ce que vous cherchez ?

Il existe aussi un public static valueOf (Class, String) sur Enum elle-même, que vous pouvez également utiliser

89voto

Benny Neugebauer Points 5393

Vous pouvez substituer la `` méthode pour chaque valeur enum.

Exemple :

Utilisation :

42voto

reala valoro Points 148

Comme le mentionne Benny Neugebauer, vous pourriez écraser le toString(). Cependant plutôt écraser la toString pour chaque champ enum j’aime plus quelque chose comme ceci :

Vous pouvez également ajouter une méthode statique pour récupérer tous les champs, pour imprimer tous les, etc.. Il suffit d’appeler getValue pour obtenir la chaîne associée à chaque élément Enum

33voto

Sean Patrick Floyd Points 109428

ou . Il n’obtient pas mieux que cela, j’ai peur

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X