Функция fromOrNull
Функция fromOrNull
используется для безопасного преобразования строки
в соответствующий элемент перечисления (Enum). Если строка не соответствует
ни одному из значений перечисления, функция возвращает null
вместо выброса исключения.
Это делает код более безопасным и избегает необходимости обработки исключений.
Синтаксис
enumClass.fromOrNull(value: String): EnumType?
Пример
Создадим перечисление дней недели и преобразуем строку в элемент Enum:
enum class Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
val dayString = "MONDAY"
val day: Day? = Day.fromOrNull(dayString)
println(day)
Результат выполнения кода:
MONDAY
Пример
Попробуем преобразовать несуществующее значение строки в элемент Enum:
val invalidString = "INVALID_DAY"
val day: Day? = Day.fromOrNull(invalidString)
println(day)
Результат выполнения кода:
null
Пример
Использование fromOrNull
с обработкой результата через Elvis оператор:
val input = "FRIDAY"
val day: Day = Day.fromOrNull(input) ?: Day.MONDAY
println(day)
Результат выполнения кода:
FRIDAY
Пример
Использование fromOrNull
в условии if
:
val userInput = "SATURDAY"
if (Day.fromOrNull(userInput) != null) {
println("Valid day entered")
} else {
println("Invalid day entered")
}
Результат выполнения кода:
Valid day entered
Пример
Работа с перечислением, содержащим пользовательские значения:
enum class Status(val code: Int) {
ACTIVE(1), INACTIVE(0), PENDING(2)
}
val status = Status.fromOrNull("ACTIVE")
println("Status: $status, Code: ${status?.code}")
Результат выполнения кода:
Status: ACTIVE, Code: 1