在 Java 中将 Int 转换为枚举

2022-08-31 04:46:27

在Java中,给定以下枚举,将Int转换为枚举的正确方法是什么?

public enum MyEnum
{
    EnumValue1,
    EnumValue2
}


MyEnum enumValue = (MyEnum) x; //Doesn't work???

答案 1

尝试 where must 是 或 ,即该枚举的有效序数。MyEnum.values()[x]x01

请注意,在Java中,枚举实际上是类(因此枚举值是对象),因此您无法强制转换为枚举甚至枚举。intInteger


答案 2

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;
    }
}