51 votes

Comment faire correspondre int à enum

Je reçois une valeur de retour sous la forme d'un long ou d'un int depuis le code natif d'Android, que je veux convertir ou faire correspondre avec un enum, à des fins de traitement. Est-ce possible ? Comment ?

66voto

Kevin Galligan Points 6101

Si vous avez le contrôle total des valeurs et des enums, et qu'ils sont séquentiels, vous pouvez utiliser la valeur ordinale de l'enum :

enum Heyo
{
  FirstVal, SecondVal
}

...later

int systemVal = [whatever];
Heyo enumVal = Heyo.values()[systemVal];

int againSystemVal = enumVal.ordinal();

62voto

Kuffs Points 12318

Vous pouvez configurer votre enum de façon à ce qu'il ait le long ou l'int intégré.

Par exemple Créer ce fichier ePasswordType.java

public enum ePasswordType {

    TEXT(0),
    NUMBER(1);

    private int _value;

    ePasswordType(int Value) {
        this._value = Value;
    }

    public int getValue() {
            return _value;
    }

    public static ePasswordType fromInt(int i) {
        for (ePasswordType b : ePasswordType .values()) {
            if (b.getValue() == i) { return b; }
        }
        return null;
    }
}

Vous pouvez alors accéder aux valeurs assignées de la manière suivante :

ePasswordType var = ePasswordType.NUMBER;

int ValueOfEnum = var.getValue();

Pour obtenir l'enum lorsque vous ne connaissez que l'int, utilisez ceci :

ePasswordType t = ePasswordType.fromInt(0);

Les Enums en Java sont très puissants car chaque valeur peut être sa propre classe.

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