Transmitir Int a enumeración en Java

Resuelto Maxim Gershkovich asked hace 13 años • 17 respuestas

¿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???
Maxim Gershkovich avatar May 04 '11 12:05 Maxim Gershkovich
Aceptado

Pruebe MyEnum.values()[x]dónde xdebe estar 0o 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 into incluso Integeruna enumeración.

Thomas avatar May 04 '2011 05:05 Thomas

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;
    }
}
Lorenzo Polidori avatar Jan 06 '2012 18:01 Lorenzo Polidori