如何将 int 与枚举匹配

2022-08-31 20:26:03

我从Android中的本机代码中以long或int的形式收到返回值,我想将其转换或与枚举匹配,以进行处理。可能吗?如何?


答案 1

如果可以完全控制值和枚举,并且它们是连续的,则可以使用枚举序号值:

enum Heyo
{
  FirstVal, SecondVal
}

...later

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

int againSystemVal = enumVal.ordinal();

答案 2

您可以设置枚举,使其内置长或 int。

例如:创建此文件电子密码类型.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中的枚举非常强大,因为每个值都可以是自己的类。