Как сопоставить int с enum - PullRequest
47 голосов
/ 03 ноября 2011

Я получаю возвращаемое значение в виде long или int из собственного кода в Android, который я хочу преобразовать или сопоставить с enum, для целей обработки. Является ли это возможным ? Как?

Ответы [ 2 ]

62 голосов
/ 03 ноября 2011

Если у вас есть полный контроль над значениями и перечислениями, и они последовательны, вы можете использовать порядковое значение перечисления:

enum Heyo
{
  FirstVal, SecondVal
}

...later

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

int againSystemVal = enumVal.ordinal();
59 голосов
/ 03 ноября 2011

Вы можете настроить свой enum так, чтобы в него входили long или int.

Например: создать этот файл 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;
    }
}

Затем вы можете получить доступ к назначенным значениям следующим образом:

ePasswordType var = ePasswordType.NUMBER;

int ValueOfEnum = var.getValue();

Чтобы получить перечисление, когда вы знаете только int, используйте это:

ePasswordType t = ePasswordType.fromInt(0);

Перечисления в java очень мощные, поскольку каждое значение может быть своего класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...