À l'aide de l'Enum valeur ordinale en cas de commutateur déclaration

Pour mon projet, je suis à l'aide des enums, et j'ai besoin de mettre en œuvre le commutateur instruction de cas, où les nombres ordinaux sont des valeurs spécifiques de l'Enum sont vérifiées, à l'instar de cette façon:

        switch ( variable )
        {
        case MyEnum.A.ordinal():
            return true;
        case MyEnum.B.ordinal():
            return true;
        default:
            return false;
        }

Remarque: les valeurs de retour sont seulement un exemple.

Malheureusement, Eclipse (je suis à l'aide de JDK 1.6) donne à mon erreur de compilation "cas
les expressions doivent être des expressions constantes". Ce que je dois faire? Est-il une autre méthode que l'statique de la table de recherche, décrit ici: Convertir enum ordinale de type enum ?

Je suppose que je ne comprends pas pourquoi vous devez utiliser l'ordinal. Pourquoi ne pouvez-vous pas simplement passer sur l'enum lui-même?
Juste curieux, mais pourquoi êtes-vous en utilisant les énumérations, si vous avez alors les variables qui utilisent les valeurs ordinales? Le point d'énumérations est leur type de sécurité, mais votre variable ne va pas être de type sécurisé.. de toute façon, il pourrait être aussi simple que de prendre la valeur ordinale un public attribut constant au lieu d'y accéder via une méthode de lecture.
Parce que j'ai besoin de valeur ordinale - enum valeurs ne sont pas utiles pour cette raison particulière, parce qu'ils sont sans rapport avec les résultats de l'interrupteur de la déclaration.
Je dois avouer que cela ne fait pas de sens pour moi - Comment la valeur de l'enum être sans rapport avec le résultat de la substitution de la valeur? L'ordinal est juste un indice pour les valeurs enum (un indice qui peut changer si vous ajoutez une nouvelle valeur d'enum) - L'ordinal, de par leur nature n'est plus qu'un transitoire de la propriété de l'enum.
par ce que vous demandez est EnumSet

OriginalL'auteur DoktorNo | 2011-07-23