Transmitir Int a enumeración en Java
¿Cuál es la forma correcta de convertir un Int a una enumeración en Java dada la siguiente enumeración?
public enum MyEnum
{
EnumValue1,
EnumValue2
}
MyEnum enumValue = (MyEnum) x; //Doesn't work???
Aceptado
Pruebe MyEnum.values()[x]
dónde x
debe estar 0
o 1
, es decir, un ordinal válido para esa enumeración.
Tenga en cuenta que en Java las enumeraciones en realidad son clases (y los valores de enumeración, por lo tanto, son objetos) y, por lo tanto, no puede convertir una enumeración int
o incluso Integer
una enumeración.
MyEnum.values()[x]
Es una operación costosa. Si le preocupa el rendimiento, es posible que desee hacer algo como esto:
public enum MyEnum {
EnumValue1,
EnumValue2;
public static MyEnum fromInteger(int x) {
switch(x) {
case 0:
return EnumValue1;
case 1:
return EnumValue2;
}
return null;
}
}