在Java中给定以下enum,将Int类型转换为enum的正确方法是什么?
public enum MyEnum
{
EnumValue1,
EnumValue2
}
MyEnum enumValue = (MyEnum) x; //Doesn't work???
在Java中给定以下enum,将Int类型转换为enum的正确方法是什么?
public enum MyEnum
{
EnumValue1,
EnumValue2
}
MyEnum enumValue = (MyEnum) x; //Doesn't work???
当前回答
一个好的选择是避免从int转换为enum:例如,如果您需要最大值,您可以比较x.o ordinal()和y.o ordinal()并相应地返回x或y。(您可能需要重新排序您的值,使这样的比较有意义。)
如果这是不可能的,我将存储myenumn .values()到一个静态数组。
其他回答
Use MyEnum enumValue = MyEnum.values()[x];
如果你想给你的整数值,你可以使用如下结构
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;
}
}
你可以这样试试。 用元素id创建Class。
public Enum MyEnum {
THIS(5),
THAT(16),
THE_OTHER(35);
private int id; // Could be other data type besides int
private MyEnum(int id) {
this.id = id;
}
public static MyEnum fromId(int id) {
for (MyEnum type : values()) {
if (type.getId() == id) {
return type;
}
}
return null;
}
}
现在使用id作为int来获取这个Enum。
MyEnum myEnum = MyEnum.fromId(5);
尝试myenumn .values()[x],其中x必须为0或1,即枚举的有效序数。
注意,在Java中枚举实际上是类(enum值因此是对象),因此您不能将int甚至Integer强制转换为enum。
一个好的选择是避免从int转换为enum:例如,如果您需要最大值,您可以比较x.o ordinal()和y.o ordinal()并相应地返回x或y。(您可能需要重新排序您的值,使这样的比较有意义。)
如果这是不可能的,我将存储myenumn .values()到一个静态数组。