Как вы обнаружили, метод enum valueOf()
ищет имя константы enum, а не добавляемые вами свойства.
Но вы можете легко добавить свой собственный метод поиска, используя любые критерии, которые выwant:
enum class Color(val hue: String) {
RED("red"),
YELLOW("yellow"),
BLUE("blue");
companion object {
fun forHue(hue: String) = values().find{ it.hue == hue }
}
}
Вызов Color.forHue("red")
возвращает ожидаемый экземпляр Color.RED
.
(Возможно, это самый простой подход, но не самый эффективный; см. ответы, такие как это .)