I have an enum defined as below, which contains a static function fromString(String s) which is like valueOf(String s) but case insensitive.
enum Letter {
A, B, C, UNKNOWN;
private static final Map<String, Letter> stringToEnumMap = new HashMap<>();
static {
for (Letter letter : values()) {
stringToEnumMap.put(letter.toString().toLowerCase(), letter);
}
}
public static Letter fromString(String symbol) {
Letter letter = stringToEnumMap.get(symbol.toLowerCase());
if (letter != null) {
return letter;
} else {
return UNKNOWN;
}
}
}
but when I execute the following code
Letter letter = Letter.fromString("a");
I get Letter.UNKNOWN returned. I tried debugging but that is where it got even more freaky. Debugger says letter != null is true because letter equals Letter.A. After that the code moves to else statement and UNKNOWN is return.
Any Idea?
Aucun commentaire:
Enregistrer un commentaire