Alex Rivera | Logout

Using string representations of enum values in switch-case

Asked 2012-04-30T16:43:43.023
24

Why is it not possible to use enum values as strings in a switch case? (Or what is wrong with this:)

String argument;
switch (argument) {
    case MyEnum.VALUE1.toString(): // Isn't this equal to "VALUE1" ?
    // something    
break;
    case MyEnum.VALUE2.toString():
    // something else
break;
Edit
Report

1 Answer

7

case MyEnum.VALUE1.toString(): // Isn't this equal to "VALUE1" ?

No, not necessarily: you are free to provide your own implementation of toString()

public enum MyType {
VALUE1 {
    public String toString() {
        return "this is my value one";
    }
},

VALUE2 {
    public String toString() {
        return "this is my value two";
    }
}

}

Moreover, someone who is maintaining your code could add this implementation after you leave the company. That is why you should not rely on String values, and stick to using numeric values (as represented by the constants MyEnum.VALUE1, MyEnum.VALUE2, etc.) of your enums instead.

answered 2012-04-30T16:46:39.623

Your Answer