Как выбрать enum по его имени
Я новичок в java, поэтому постоянно задаю тупые вопросы. Вот один из них. У меня есть такой enum:
public enum Color {
BLUE("синий"),
YELLOW("жёлтый"),
WHITE("белый");
}
Мне очень хочется чтобы я мог волшебным образом сделав что-то такое:
Color color = Color.magicMethod("синий")
получить переменную color содержащую в себе то же самое, что я бы получил, если бы сделал
Color color = Color.BLUE
Я нашёл информацию про .valueof(), но там в качестве параметра нужно передать "BLUE" вместо "синий"
Признателен за ваше потраченное время и ответы.
Ответы (1 шт):
Автор решения: Дмитрий
→ Ссылка
Можно сделать примерно так:
import java.util.Arrays;
import java.util.Map;
import java.util.stream.Collectors;
public enum Color {
BLUE("синий"),
YELLOW("жёлтый"),
WHITE("белый");
private final String colorName;
private Color(String colorName) {
this.colorName = colorName;
}
private final static Map<String, Color> colors = Arrays.stream(Color.values())
.collect(Collectors.toMap(k->k.colorName, v->v));
public static Color getColorByName(String colorName) {
return colors.get(colorName);
}
}