Camilla Camilla - 4 months ago 13
Java Question

get enum name from enum value

I've read a lot about how obtain the corresponding name of an

from its value using java, but no example seems to work for me! What is wrong?

public class Extensions {

public enum RelationActiveEnum

private final int value;

private RelationActiveEnum(final int value) {
this.value = value;


and in another class I use:

int dbValue = supp.ACTIVE;
Extensions.RelationActiveEnum enumValue(dbValue);
String stringName = enumValue.toString(); //Visible
// OR
int dbValuee = supp.ACTIVE;
String stringValue = Enum.GetName(typeof(RelationActiveEnum), dbValue);

I should work, right? but it doesn't!!!! it tells me that dbValue cannote be cast to RelationActiveEnum...


Since your 'value' also happens to match with ordinals you could just do:

public enum RelationActiveEnum {

    private final int value;

    private RelationActiveEnum() {
        this.value = ordinal();

And getting a enum from the value:

int value = 1;
RelationActiveEnum enumInstance = RelationActiveEnum.values()[value];

I guess an static method would be a good place to put this:

public enum RelationActiveEnum {
     public static RelationActiveEnum fromValue(int value) 
             throws IllegalArgumentException {
         try {
              return RelationActiveEnum.values()[value]
         } catch(ArrayIndexOutOfBoundsException e) {
              throw new IllegalArgumentException("Unknown enum value :"+ value);

Obviously this all falls apart if your 'value' isn't the same value as the enum ordinal.