web-dev-qa-db-fra.com

Comment faire correspondre l'int à l'énumération

Je reçois une valeur de retour sous forme de long ou int de code natif dans Android, que je souhaite convertir ou faire correspondre avec enum, à des fins de traitement. C'est possible ? Comment?

48
Sachchidanand

Si vous avez le contrôle total des valeurs et des énumérations, et qu'elles sont séquentielles, vous pouvez utiliser la valeur ordinale de l'énumération:

enum Heyo
{
  FirstVal, SecondVal
}

...later

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

int againSystemVal = enumVal.ordinal();
62
Kevin Galligan

Vous pouvez configurer votre énumération de manière à ce qu'elle intègre le long ou l'int.

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 ensuite accéder aux valeurs affectées comme ceci:

ePasswordType var = ePasswordType.NUMBER;

int ValueOfEnum = var.getValue();

Pour obtenir l'énumération lorsque vous ne connaissez que l'int, utilisez ceci:

ePasswordType t = ePasswordType.fromInt(0);

Les énumérations dans Java sont très puissantes car chaque valeur peut être sa propre classe.

60
Kuffs