Как совместить int с перечислением
Я получаю возвращаемое значение в форме long или int из собственного кода на Android, которое я хочу преобразовать или сопоставить с перечислением для целей обработки. Является ли это возможным?
Как?
Ответы
Ответ 1
Если у вас есть полный контроль над значениями и перечислениями, и они последовательны, вы можете использовать порядковое значение enum:
enum Heyo
{
FirstVal, SecondVal
}
...later
int systemVal = [whatever];
Heyo enumVal = Heyo.values()[systemVal];
int againSystemVal = enumVal.ordinal();
Ответ 2
Вы можете настроить свое перечисление так, чтобы оно было длинным или встроенным в него.
e.g: Создайте этот файл 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 очень мощные, так как каждое значение может быть его собственным классом.