我从Android中的Native代码接收long或int形式的返回值,我想转换或与enum匹配,以便进行处理。可能吗 ? 怎么样?
答案 0 :(得分:62)
如果您完全控制值和枚举,并且它们是连续的,则可以使用枚举序数值:
enum Heyo
{
FirstVal, SecondVal
}
...later
int systemVal = [whatever];
Heyo enumVal = Heyo.values()[systemVal];
int againSystemVal = enumVal.ordinal();
答案 1 :(得分:59)
您可以设置枚举,使其内置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中的枚举非常强大,因为每个值都可以是它自己的类。