Java >> Java tutorial >  >> Tag >> switch

Sikker brug af Enum valueOf til String-sammenligning på en switch

Du skal fange IllegalArgumentException

try {
    switch (ACTION.valueOf(valueToCompare)) {

    }
} catch (IllegalArgumentException iae) {
    // unknown
}

Eller du kan oprette din egen funktion, som gør dette.

public static <E extends Enum<E>> E valueOf(E defaultValue, String s) {
    try {
        return Enum.valueOf(defaultValue.getDeclaringClass(), s);
    } catch (Exception e) {
        return defaultValue;
    }
}

Bemærk:switch(null) kaster en NullPointerException i stedet for at forgrene sig til default:


Brug af undtagelser til flowkontrol betragtes som en dårlig praksis.

    String valueToCompare = value.toUpperCase();

    ACTION action = Arrays.stream(ACTION.values())
       .filter(a -> a.name().equals(valueToCompare)).findFirst().orElse(ACTION.NOTVALID);

Java tag