2010-05-26 3 views
2

Quelle est la meilleure façon d'obtenir un identifiant unique à partir d'un ENUM qui restera cohérent entre l'exécution répétée du programme?Meilleure façon de créer un champ ID unique pour une énumération

Actuellement, je le fais manuellement en passant un ID au constructeur enum. Je ne veux pas vraiment faire ça, je peux l'aider.

Une autre option consisterait à utiliser un champ statique qui est incrémenté pour chaque valeur d'énumération. Le problème est que si plus tard je décide de déplacer les champs d'énumération ou d'en supprimer, cela causera des problèmes avec mon programme car l'identifiant sera sauvegardé dans les préférences de l'utilisateur.

L'ID peut être n'importe quel type de base ou une chaîne.

+1

Pourquoi avez-vous besoin de faire cela? – Syntactic

Répondre

3

C'est peut-être trop simple, mais qu'est-ce qui ne va pas avec "nom de la classe + nom de l'énumération"?

Ajoutez simplement cette méthode à votre ENUM:

public String getID() { 
    return getClass().getName() + "." + name(); 
} 
+0

Cela devrait faire l'affaire, merci – jax

1

Lors de la création d'un ENUM que vous pouvez faire:

public enum myEnum { 
    VAL1("v1"), VAL2("v2"); 

    private String id; 

    private myEnum(String id) { this.id = id }; 

    public getId() { return id;} 
} 

Ou vous pouvez utiliser le nom() que chaque ENUM qui renvoie le nom déclaré , dans ce cas "VAL1" ou "VAL2". Les deux sont des façons valides de faire ce que vous voulez. Lorsque vous avez dit que vous avez transmis l'identifiant au constructeur, c'est ce que vous vouliez dire, et si oui, veuillez expliquer pourquoi cela ne vous aide pas.

0

Le nom de l'énumération sera maintenu constant. Vous ne devriez pas définir une valeur différente.

Questions connexes