2011-11-03 129 views

回答

57

是否有价值观和枚举的完全控制,而且他们的顺序,你可以使用枚举序号值:

enum Heyo 
{ 
    FirstVal, SecondVal 
} 

...later 

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

int againSystemVal = enumVal.ordinal(); 
+5

不推荐使用序号来获取枚举的“值”。相反,请改用实例字段。请参阅Josh Bloch的Effective Java第2版中的第31项。 –

50

您可以设置您的枚举,使其具有内置的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中的枚举是ve强大,因为每个价值都可以成为自己的阶级。

+3

这比使用顺序一个更好的方法()。要了解原因,请阅读Effective Java –

+0

@Kuffs:是否还有一种正确的方法来使用整数值**设置枚举? – Levit

+0

@Levit值在设计时间和运行时间之间设置。如果你的意思是只在你知道int时检索枚举值,请参阅我编辑的答案。 – Kuffs