Cast Int To Enum In Java


Answer :

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

Comments

Popular posts from this blog

Are Regular VACUUM ANALYZE Still Recommended Under 9.1?

Can Feynman Diagrams Be Used To Represent Any Perturbation Theory?