Cast Int to enum in Java Cast Int to enum in Java java java

Cast Int to enum in Java


Try MyEnum.values()[x] where x must be 0 or 1, i.e. a valid ordinal for that enum.

Note that in Java enums actually are classes (and enum values thus are objects) and thus you can't cast an int or even Integer to an enum.


MyEnum.values()[x] is an expensive operation. If the performance is a concern, you may want to do something like this:

public enum MyEnum {    EnumValue1,    EnumValue2;    public static MyEnum fromInteger(int x) {        switch(x) {        case 0:            return EnumValue1;        case 1:            return EnumValue2;        }        return null;    }}


If you want to give your integer values, you can use a structure like below

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