在给定以下枚举的情况下,在Java中将Int转换为枚举的正确方法是什么?
public enum MyEnum
{
EnumValue1,
EnumValue2
}
MyEnum enumValue = (MyEnum) x; //Doesn't work???
发布于 2011-05-04 13:28:01
尝试MyEnum.values()[x]
,其中x
必须是0
或1
,即该枚举的有效序号。
请注意,在Java中,枚举实际上是类(因此枚举值是对象),因此不能将int
甚至Integer
强制转换为枚举。
发布于 2012-01-07 02:09:04
MyEnum.values()[x]
是一个昂贵的操作。如果性能令人担忧,您可能需要执行以下操作:
public enum MyEnum {
EnumValue1,
EnumValue2;
public static MyEnum fromInteger(int x) {
switch(x) {
case 0:
return EnumValue1;
case 1:
return EnumValue2;
}
return null;
}
}
发布于 2013-01-08 22:36:02
如果你想给出整数值,你可以使用如下结构
public enum A
{
B(0),
C(10),
None(11);
int id;
private A(int i){id = i;}
public int GetID(){return id;}
public boolean IsEmpty(){return this.equals(A.None);}
public boolean Compare(int i){return id == i;}
public static A GetValue(int _id)
{
A[] As = A.values();
for(int i = 0; i < As.length; i++)
{
if(As[i].Compare(_id))
return As[i];
}
return A.None;
}
}
https://stackoverflow.com/questions/5878952
复制相似问题